Como parte das dependências do projeto em que estou trabalhando, usamos vários serviços principais. Esses serviços, para os quais não podemos fazer grandes mudanças, são uma grande bagunça. Dependendo do método que invocamos, precisamos converter nossos parâmetros (e retornar valores) em diferentes codificações, localidades e fusos horários.
Como geramos esses parâmetros em vários locais em nosso próprio código, realizamos essas conversões em vários locais. Algumas vezes em que os geramos, antes de passá-los ao nosso lado; algumas vezes antes de invocar o método no serviço principal. Portanto, a bagunça está se espalhando por todo o código e quero introduzir uma camada para isolá-lo.
Minha pergunta é qual é a melhor abordagem para isso. Inicialmente, pensei em apenas criar um serviço / método correspondente a cada serviço / método que precisamos usar. Esses métodos simplesmente executariam a conversão, delegariam nos serviços principais e executariam a conversão do valor de retorno. Mas isso parece de alguma forma pesado.
Então pensei em usar anotações, mas não tenho certeza de como usá-las. E, pelo que entendi, o ideal seria anotar o método invocado. Por exemplo, eu poderia anotar os parâmetros com @converToUtc
e fazer a conversão na implementação da anotação. Isso está correto? Obviamente, isso é difícil porque não é o nosso código e ele quebrará o código atualmente usando esses métodos em outros projetos que não o nosso.
Qual é a melhor abordagem para esta situação?