[jboss-user] [JBoss Tools] - JBoss 7 AS RESTEasy issue with generic type arguments
Jan Tim
do-not-reply at jboss.com
Fri Jul 22 10:27:00 EDT 2011
Jan Tim [http://community.jboss.org/people/jantimw] created the discussion
"JBoss 7 AS RESTEasy issue with generic type arguments"
To view the discussion, visit: http://community.jboss.org/message/617055#617055
--------------------------------------------------------------
Before I recently migrated from JBoss 6 to 7, I was using JAX-RS for my RESTful services and everything was went fine. Now that I am working with JBoss 7 I noticed that I can use the build in RESTEasy for my purposes. But unfortunately there seems to be an issue with generic types when used in annotated POST or PUT methods.
To make things clear, I created a small and easy example of what was working for me before but no longer does:
@Path("/g")
public abstract class GenericResource<T extends Person> {
@POST
@Path("/add")
@Consumes("application/json")
@Produces("application/json")
public String doPost(T person) { // The use of a generic type as argument causes an error
return "success";
}
@GET
@Produces("application/json")
public T doGet() {
@SuppressWarnings("unchecked")
T p = (T) new PersonImpl("TestPerson");
return p;
}
}
As you can see, I just build an abstract class with a generic type T and annotated two methods, one with "POST" and one with "GET". This example worked fine with JBoss 6 and JAX-RS, but now I get the following error on sending any request (get or post) through RESTEeasy to this class:
Allocate exception for servlet javax.ws.rs.core.Application: java.lang.RuntimeException: Unable to determine value of type parameter T
at org.jboss.resteasy.util.Types.getActualValueOfTypeVariable(Types.java:319) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.MethodInjectorImpl.<init>(MethodInjectorImpl.java:65) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.InjectorFactoryImpl.createMethodInjector(InjectorFactoryImpl.java:55) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethod.<init>(ResourceMethod.java:71) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.processMethod(ResourceMethodRegistry.java:178) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:123) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:106) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:83) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:72) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:367) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:225) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:67) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36) [resteasy-jaxrs-2.2.1.GA.jar:]
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:952) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:188) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.0.Final.jar:7.0.0.Final]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.0.Final.jar:7.0.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_26]
If I remove the POST-method, at least the GET-request ist working correctly. Although changing the argument to a type that is not generic fixes the error but that is no long term solution for my problem. Am I doing something wrong or is it a bug that is already known?
Best Regards
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/617055#617055]
Start a new discussion in JBoss Tools at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2128]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110722/c71b9317/attachment-0001.html
More information about the jboss-user
mailing list