users@jersey.java.net

RE: [Jersey] WadlGeneratorResourceDoc NullPointerException

From: Patrick Sauts <patrick.viadeo_at_gmail.com>
Date: Wed, 21 Jul 2010 16:01:50 +0200

Hello Pavel,

 

I found the bug.

In fact I wrote my own IntrospectionModeler(based on yours of course) for
some rules (others annotations on resources) because I didn't find any other
way. (Couldn't do it between IntrospectionModeler.createResource and
wadlBuilder.generate(Set<AbstractResource> resources). Filters as in

 
<https://jersey.dev.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/spi/
container/ResourceFilterFactory.html>
https://jersey.dev.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/spi/c
ontainer/ResourceFilterFactory.html

are not really appropriate to do what I want.

The purpose was to display an application.wadl depending on the user right
to access a resource.

And in the last version 1.3 a few lines were added to the original
IntrospectionModeler from 1.1.5.1 or 1.1.3-ea version.

Those lines are about @Consumes.

 

Sorry for the inconvenience caused.

 

Patrick.

 

From: Pavel.Bucek_at_Sun.COM [mailto:Pavel.Bucek_at_Sun.COM]
Sent: mercredi 21 juillet 2010 00:17
To: users_at_jersey.dev.java.net
Subject: Re: [Jersey] WadlGeneratorResourceDoc NullPointerException

 

Hello Patrick,

can you provide minimal reproducible testcase?

I added method

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces( { MediaType.TEXT_PLAIN })
    public String test(@FormParam("contractType") Integer stuff1) {
        return "test";
    }

to ItemResource in extended-wadl-webapp sample and I got:

...
                <ns2:method name="POST" id="test">
                    <ns2:request>
                        <ns2:representation
mediaType="application/x-www-form-urlencoded">
                            <ns2:param xmlns:xs=
<http://www.w3.org/2001/XMLSchema> "http://www.w3.org/2001/XMLSchema"
type="xs:int" style="query" name="contractType"/>
                        </ns2:representation>
                    </ns2:request>
                    <ns2:response>
                        <ns2:representation mediaType="text/plain"/>
                    </ns2:response>
                </ns2:method>
...

No exception was thrown during wadl generation.

Regards,
Pavel

On 7/19/10 1:51 PM, Patrick Sauts wrote:

Hello,

 

I've just updated jersey version to 1.3 and I'm facing a curious behavior
generating extended wadl.

Using the wadl-resourcedoc-doclet maven task to write the wadl to a file I
just had to change xercesImpl to version 2.8.1 and it works fine.

 

java.lang.NullPointerException

      at
com.sun.jersey.server.wadl.generators.resourcedoc.WadlGeneratorResourceDocSu
pport.createParam(WadlGeneratorResourceDocSupport.java:325)

      at
com.sun.jersey.server.wadl.WadlBuilder.generateParam(WadlBuilder.java:260)

      at
com.sun.jersey.server.wadl.WadlBuilder.generateRequest(WadlBuilder.java:191)

      at
com.sun.jersey.server.wadl.WadlBuilder.generateMethod(WadlBuilder.java:155)

      at
com.sun.jersey.server.wadl.WadlBuilder.generateResource(WadlBuilder.java:282
)

      at
com.sun.jersey.server.wadl.WadlBuilder.generateResource(WadlBuilder.java:265
)

      at
com.sun.jersey.server.wadl.WadlBuilder.generate(WadlBuilder.java:101)

 

 

In fact "_delegate.createParam( r, m, p );" line 320 of WadlGenerator class
return null.

 

The resource the error appends on, has those annotations:

      @POST

      @Consumes(MediaType.APPLICATION_FORM_URLENCODED)

      @Produces( { MediaType.TEXT_PLAIN })

Public Response stuff(@FormParam("contractType") Integer stuff1, ..)

 

 

 

My maven dependencies:

                <properties>

                               .

 
<com.sun.jersey.version>1.3</com.sun.jersey.version>

                </properties>

                               .

                               <!-- Third party libraries -->

                               <dependency>

 
<groupId>com.sun.xml.bind</groupId>

 
<artifactId>jaxb-impl</artifactId>

                                               <version>2.2.1.1</version>

                               </dependency>

                               <dependency>

 
<groupId>com.sun.jersey</groupId>

 
<artifactId>jersey-server</artifactId>

 
<version>${com.sun.jersey.version}</version>

                               </dependency>

                               <dependency>

 
<groupId>com.sun.jersey</groupId>

 
<artifactId>jersey-json</artifactId>

 
<version>${com.sun.jersey.version}</version>

                                               <exclusions>

                                                               <exclusion>

 
<groupId>com.sun.xml.bind</groupId>

 
<artifactId>jaxb-impl</artifactId>

                                                               </exclusion>

                                               </exclusions>

                               </dependency>

                               <dependency>

 
<groupId>com.sun.jersey.contribs</groupId>

 
<artifactId>jersey-spring</artifactId>

                                               <version>1.3</version>

                               </dependency>

 

I'm looking for a solution if you can help me.

 

Thank you in advance.

Patrick.