I can use POST method to post XML data. The POST type method addRequest() is
defined as below:
@POST
@Path("/addRequest")
@Produces({MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_XML})
public String addRequest(RequestWrapper rw) {
System.out.println(rw);
return rw.toString();
}
@XmlRootElement
public static class RequestWrapper {
List<String> theList;
String theRequest;
@XmlElement (name="listItem")
@XmlElementWrapper
public Collection<String> getTheList() {
return theList;
}
public void setTheList(List<String> theList) {
this.theList = theList;
}
public String getTheRequest() {
return theRequest;
}
public void setTheRequest(String theRequest) {
this.theRequest = theRequest;
}
@Override
public String toString() {
return "RequestWrapper{" +
"theList=" + theList +
", theRequest='" + theRequest + '\'' +
'}';
}
}
The according WADL is:
- <application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <grammars>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xs:element name="requestWrapper" type="requestWrapper" />
- <xs:complexType name="requestWrapper">
- <xs:sequence>
- <xs:element minOccurs="0" name="theList">
- <xs:complexType>
- <xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="listItem"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="theRequest" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</grammars>
- <resources
base="http://localhost:8080/ws-rest-prototype/services/LuckyNumbersRest">
- <resource path="/luckynumbers">
- <resource path="/addRequest">
- <method name="POST">
- <request>
<representation mediaType="application/xml" />
</request>
- <response>
- <representation mediaType="application/xml">
</representation>
</response>
</method>
</resource>
</resource>
</resources>
</application>
When I post XML data
<requestWrapper><theRequest>abc</theRequest></requestWrapper> to addRequest
method, I get the return: RequestWrapper{theList=null, theRequest='abc'}, it
is expected.
However when I post XML data
<requestWrapper><theRequest>abc</theRequest><theList><listItem>item1</listItem></theList></requestWrapper>
, the error happens:(I use the latest CXF 2.4.0). Is something wrong in my
code or XML data?
java.lang.NullPointerException
at
com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack
(Lister.java:301)
at
com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack
(Lister.java:265)
at
com.sun.xml.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:117)
at
com.sun.xml.bind.v2.runtime.property.ArrayERProperty$ReceiverImpl.rec
eive(ArrayERProperty.java:209)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElem
ent(UnmarshallingContext.java:518)
at
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEn
dElement(StAXStreamConnector.java:217)
at
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(S
tAXStreamConnector.java:181)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(
UnmarshallerImpl.java:360)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(U
nmarshallerImpl.java:332)
at
org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputS
tream(JAXBElementProvider.java:214)
at
org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBEle
mentProvider.java:180)
at
org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElemen
tProvider.java:149)
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.
java:1013)
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.jav
a:594)
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.ja
va:559)
at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JA
XRSInInterceptor.java:230)
at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAX
RSInInterceptor.java:88)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:263)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
ationObserver.java:118)
at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(Abstract
HTTPDestination.java:208)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(
ServletController.java:223)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletCont
roller.java:166)
at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpr
ingServlet.java:113)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Ab
stractHTTPServlet.java:184)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractH
TTPServlet.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(Abstract
HTTPServlet.java:163)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:852)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:588)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
9)
at java.lang.Thread.run(Thread.java:662)
May 3, 2011 4:23:29 PM
org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper t
oResponse
WARNING: WebApplicationException has been caught : cause is
java.lang.NullPointe
rException
--
View this message in context:
http://cxf.547215.n5.nabble.com/java-util-List-in-rquest-missed-in-WADL-tp4365634p4368714.html
Sent from the cxf-user mailing list archive at Nabble.com.