I have the following GET REST method:
import java.time.OffsetDateTime; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import com.product.rest.api.TransactionsApi; import com.product.rest.model.Transaction; @Path("/transactions") @Api(description = "the transactions API") @Consumes({ "application/json" }) @Produces({ "application/json" }) public class TransactionsApiImpl extends TransactionsApi { @GET @Consumes({ "application/json" }) @Produces({ "application/json" }) @ApiOperation(value = "", notes = "Get all transactions", response = Transaction.class, responseContainer = "List", tags = {}) @ApiResponses( value = { @ApiResponse(code = 200, message = "OK", response = Transaction.class, responseContainer = "List"), @ApiResponse(code = 400, message = "Bad Request", response = Transaction.class, responseContainer = "List"), @ApiResponse(code = 404, message = "Not Found", response = Transaction.class, responseContainer = "List"), @ApiResponse(code = 500, message = "Internal Server Error", response = Transaction.class, responseContainer = "List") }) @Override public Response transactionsGet( @HeaderParam("tok") String tok, @QueryParam("param1") Integer param1, @QueryParam("param2") String param2, @QueryParam("param3") OffsetDateTime param3, @QueryParam("param4") OffsetDateTime param4, @QueryParam("param5") Integer param5, @QueryParam("param6") Integer param6, @QueryParam("param7") String param7) { return Response.ok().entity("Success!").build(); }
TransactionsApi is a generated implementation using the Swagger Codegen, just like the Transaction model class. I have a few other functions in this class, but whenever I leave the GET /transactions function without commenting, I get the following error:
WARN [Thread-1] (ContextHandler.java:2175) - unavailable org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. [[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response com.product.rest.impl.v1.TransactionsApiImpl.transactionsGet(java.lang.String,java.lang.Integer,java.lang.String,java.time.OffsetDateTime,java.time.OffsetDateTime,java.lang.Integer,java.lang.Integer,java.lang.String) at index 3.; source='ResourceMethod{httpMethod=GET, consumedTypes=[application/json], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.product.rest.impl.v1.TransactionsApiImpl, handlerConstructors=[ org.glassfish.jersey.server.model.HandlerConstructor@7df78e88 ]}, definitionMethod=public javax.ws.rs.core.Response
All other similar questions I found relate to MultiPart Data and file MultiPart Data , while I make a simple GET request. Other functions that also use the javax.ws.rs.code.Response class javax.ws.rs.code.Response not have this problem, and the server starts normally.
I noticed that the problem occurs when the OffsetDateTime class is in the parameters (i.e. param3 and param4 ), but I could not figure out why. Moreover, the OffsetDateTime was chosen by Swagger Codegen, and I do not want to change it, seeing how I will have to change each derived file after each recovery of my sources.
Has anyone had this problem before with REST and OffsetDateTime ?