RESOLVIDO - REST - Passar null para um parâmetro Integer

Tenho a seguinte situação no meu REST (Jersey):

http://localhost:8080/api/listar_log_utilizacao/null

@GET @Path("/listar_log_utilizacao/{idUsuario: .*}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response listarLogUtilizacao(@PathParam("idUsuario") Integer idUsuario) throws Exception  {
...
}

Valores inteiros são recebidos sem problemas, porém, nessa situação, o parâmetro é opcional e quando vem null como parâmetro dá erro 404…
Existe alguma forma de passar null como parâmetro?

Boa tarde,
Troca a anotação @PathParam por @QueryParam e retira o parâmetro da url no @Path

@Path("/listar_log_utilizacao")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response listarLogUtilizacao(@QueryParam("idUsuario") Integer idUsuario) throws Exception {
…
}

Boa tarde!
Retirando o parâmetro da URL ele funciona da forma que está…
Assim funciona:
http://localhost:8080/api/listar_log_utilizacao//
Porém, preciso passar assim:
http://localhost:8080/api/listar_log_utilizacao/null

http://localhost:8080/api/listar_log_utilizacao?idUsuario=null

Resolvi o problema criando uma classe Integer personalizada para aceitar null…
Segue resolução:

@GET @Path("/listar_log_utilizacao/{idUsuario: .*}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response listarLogUtilizacao(@PathParam(“idUsuario”) IntegerParam idUsuario) throws Exception {

}

Classe Java:
public class IntegerParam implements IServer {
private Integer number = null;
public IntegerParam(String number) throws WebApplicationException {
try {
if ((number.equals(“null”)) || (number.isEmpty())) {
return;
}
// Converter String em Integer
if (util.isInteger(number)) {
this.number = util.toInt(number);
return;
}
} catch (Exception e) {
throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity("Couldn’t parse to Integer: " + e.getMessage()).build());
}
}

public Integer getInteger() {
	return this.number;
}

}

1 curtida