Gostaria de enviar solicitações http com um valor em minúsculas, onde na variável de caminho, o valor é obtido de um Enum com valores em maiúsculas.
Em um código muito simples:
@HttpExchange(accept = "application/json")
public interface FooHttpExchange {
@GetExchange("/api/1.1/{day}/dosomething")
String doSomethingWithDayOfWeek(@PathVariable("day") Day day);
com o Enum:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Como você pode ver, todos os valores da enumeração estão em letras maiúsculas, para respeitar as convenções Java sobre enumeração.
Mas também obtenho os Enums de bibliotecas de terceiros. Não posso alterar o conteúdo do Enum.
Eu esperaria enviar isso como uma solicitação (tomando segunda-feira como exemplo):
http://example.com/api/1.1/monday/dosomething
Infelizmente, ele está enviando isto:
http://example.com/api/1.1/MONDAY/dosomething
E no lado do servidor, há uma análise, ou seja, ele espera coisas em letras minúsculas.
A solicitação falha
Se eu alterasse a enumeração para letras minúsculas, poderia confirmar que a solicitação estaria funcionando.
E às vezes, obtenho o Enum diretamente de uma biblioteca de terceiros, onde não posso alterar o código.
No entanto, isso quebra a convenção de enumeração do Java que exige que elas sejam colocadas em letras maiúsculas no código.
Como ter a enumeração Java em letras maiúsculas, mas poder enviá-la em letras minúsculas ao enviar a solicitação http?