Hi Paul,
Thanks a lot for the quick reply.
I think this is more than a bug in the javadoc then. I tried annotating the
entity parameter with an annotation of my own and jersey craches on it. This
is the exception I am getting:
SEVERE: Exception occurred when intialization
com.sun.jersey.api.container.ContainerException: Method, public
javax.ws.rs.core.Response
com.bps.iproject.jersey.resources.BlueprintControlControlTestResource.addControlTestsToControl(java.util.LinkedHashSet,long,long),
annotated with PUT of resource, class
com.bps.iproject.jersey.resources.BlueprintControlControlTestResource, is
not recognized as valid Java method annotated with @HttpMethod.
at
com.sun.jersey.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:74)
at
com.sun.jersey.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:56)
at
com.sun.jersey.impl.model.ResourceClass.processMethods(ResourceClass.java:244)
at
com.sun.jersey.impl.model.ResourceClass.<init>(ResourceClass.java:116)
at
com.sun.jersey.impl.application.WebApplicationImpl.newResourceClass(WebApplicationImpl.java:292)
at
com.sun.jersey.impl.application.WebApplicationImpl.getResourceClass(WebApplicationImpl.java:263)
at
com.sun.jersey.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:827)
at
com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:671)
at
com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:66)
at
com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:538)
at
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:197)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4364)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:516)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Jan 26, 2009 11:28:28 AM org.apache.catalina.core.ApplicationContext log
Here is the signature of the method:
> @PUT public Response addQuestionsToBlueprintControl(@JSONPath("questions")
> LinkedHashSet<Question> questions,
> @PathParam("blueprintId") long blueprintId,
> @PathParam("controlId") long controlId)
>
Where JSONPath is my annotation defined like this:
@Target({ElementType.PARAMETER})
> @Retention(RetentionPolicy.RUNTIME)
> public @interface JSONPath {
>
> String value();
>
> }
>
I have an instance of MessageBodyReader that is able to convert the reuest
entity to a LinkedHashSet<Question>.
This exception I get during application startup and jersey fails to start
because of this.
Any ideas?
Thanks.
On Mon, Jan 26, 2009 at 4:54 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:
> Hi Erick,
>
>
> On Jan 26, 2009, at 4:17 AM, Erick Dovale wrote:
>
> Hi,
>> Can anyone explain what annotations are passed in the Annotation[]
>> parameter in the readFrom method in MessageBodyReader?
>> I can't understand the javadoc; this is what it says:
>>
>> an array of the annotations on the declaration of the artifact that will
>> be initialized with the produced instance. E.g. if the message body is to be
>> converted into a method parameter, this will be the annotations on that
>> parameter returned by <code>Class.getParameterAnnotations</code>.
>>
>> First, I could not find such method in java.lang.Class.
>> Am I missing something?? or this javadoc a bit screwy?
>>
>>
> Bug in the JavaDoc. It should be "Method.getParameterAnnotations"
>
> If there is a resource method say:
>
> @POST
> public void post(@QueryParam String a, @XYZ @ABC MyType entity) { ... }
>
> Then the parameter "entity" is selected to be the parameter that the
> request entity will be serialized to with the selected message body writer.
> The array of annotations will be those declared on the parameter "entity".
>
> Paul.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
>