JAX-RS e Parâmetros genéricos

Boa Noite pessoal,

Há algum tipo no JAX-RS em que possa passar um parâmetro genérico? No momento em que o método recebe uma mensagem JSON, ele transforma em um OBJETO java. Caso receba um outro objeto, esse mesmo método perde a capacidade de transformação visto que não conhece esse segundo objeto. Existe uma maneira de fazer isso de forma genérica?

Por Exemplo, em um método usando POST, com um único parâmetro, posso ter a situação abaixo?

Mensagem1 - transforma em objeto do tipo 1
Mensagem2 - transforma em objeto do tipo 2

Coloca um trecho de código pra ver se a gente entende melhor

Por exemplo:
O Código abaixo irá receber uma mensagem do tipo: {“serviceName”:“nome_do_serviço”, “paramInteiro1”: 10, “paramInteiro2”:20}


    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response esbListener(@WebParam(name = "msg") ServiceMessage msg) throws MessageTransmissionException {
                             
                return Response.ok(msg).build();
                  
    }    

Com essa mensagem e com este código funciona perfeitamente. Fazendo com Response, o retorno é genérico. Independente do que minha app retornar, ele consegue enviar no corpo do HTTP. Mas, o parametro msg, é limitado. Se eu quiser enviar a seguinte mensagem {“serviceName”:“nome_do_serviço”, “paramInteiro1”: 10}, ocorrerá uma exceção…


import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class ServiceMessage {

    private String serviceName;
    private int numberOne;
    private int numberTwo;

    public ServiceMessage() {
    }

    public ServiceMessage(String serviceName, int numberOne, int numberTwo) {
        this.serviceName = serviceName;
        this.numberOne = numberOne;
        this.numberTwo = numberTwo;
    }

    public int getNumberOne() {
        return numberOne;
    }

    public void setNumberOne(int numberOne) {
        this.numberOne = numberOne;
    }

    public int getNumberTwo() {
        return numberTwo;
    }

    public void setNumberTwo(int numberTwo) {
        this.numberTwo = numberTwo;
    }

    public String getServiceName() {
        return serviceName;
    }

    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

}

Será que existe a possibilidade de fazer com que o parâmetro msg seja genérico? ou seja, recebe qualquer mensagem. Se ela for aceitavel, faz o processamento. Senão, envia uma mensagem de erro? Não sei se fui claro, qualquer coisa tento explicar melhor. Att, Obrigado pela atenção.

Quando vc diz ‘qualquer mensagem’ vc quer dizer receber um objeto de qualquer tipo?

Exato.
Como se em ServiceMessage eu tivesse uma lista de objetos que são permitidos na aplicação. Daí quando chega um objeto, de qualquer tipo, ele verifica nessa lista. Caso exista, faz processamento. Caso contrário, emite erro.

Alguém?

Para ser mais claro,

@POST  
@Consumes(MediaType.APPLICATION_JSON)  
@Produces(MediaType.APPLICATION_JSON)  
public Response listener( T msg) { 

           //Verifica se msg pertence a uma lista/mapeamento de serviços
           //caso exista, transforme-o  
                           
            return Response.ok(msg).build();  
                
}