NullPointerException from MapType
---------------------------------
Key: CXF-2199
URL: https://issues.apache.org/jira/browse/CXF-2199
Project: CXF
Issue Type: Bug
Components: Aegis Databinding
Affects Versions: 2.2.1
Environment: Maven version: 2.0.10
Java version: 1.5.0_16
OS name: "mac os x" version: "10.5.6" arch: "i386" Family: "unix"
Reporter: Valerio Schiavoni
I'm writing a WSDL-first application. Given this WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="FcService"
targetNamespace="http://bf.fractal.objectweb.org/"
xmlns:ns1="http://schemas.xmlsoap.org/wsdl/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://bf.fractal.objectweb.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://bf.fractal.objectweb.org"
xmlns:tns="http://bf.fractal.objectweb.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="HelloWorldException">
<xsd:sequence />
</xsd:complexType>
</xsd:schema>
<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://bf.fractal.objectweb.org/"
xmlns:ns0="http://bf.fractal.objectweb.org"
xmlns:tns="http://bf.fractal.objectweb.org/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="anyType2anyTypeMap">
<xsd:sequence>
<xsd:element maxOccurs="unbounded"
minOccurs="0" name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0"
name="key" type="xsd:anyType" />
<xsd:element minOccurs="0"
name="value" type="xsd:anyType" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="print" type="tns:print" />
<xsd:complexType name="print">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="printResponse" type="tns:printResponse" />
<xsd:complexType name="printResponse">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="getBytes" type="tns:getBytes" />
<xsd:complexType name="getBytes">
<xsd:sequence>
<xsd:element minOccurs="0" name="arg0"
nillable="true" type="tns:anyType2anyTypeMap" />
<xsd:element name="arg1" nillable="true"
type="xsd:base64Binary" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="getBytesResponse" type="tns:getBytesResponse" />
<xsd:complexType name="getBytesResponse">
<xsd:sequence>
<xsd:element name="return" nillable="true"
type="xsd:base64Binary" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="printAndAnswer" type="tns:printAndAnswer" />
<xsd:complexType name="printAndAnswer">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="printAndAnswerResponse"
type="tns:printAndAnswerResponse" />
<xsd:complexType name="printAndAnswerResponse">
<xsd:sequence>
<xsd:element minOccurs="0" name="return"
nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="badMethod" type="tns:badMethod" />
<xsd:complexType name="badMethod">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="badMethodResponse" type="tns:badMethodResponse"
/>
<xsd:complexType name="badMethodResponse">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="HelloWorldException"
nillable="true" type="ns0:HelloWorldException" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="badMethod">
<wsdl:part element="tns:badMethod" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="printAndAnswer">
<wsdl:part element="tns:printAndAnswer" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="HelloWorldException">
<wsdl:part element="tns:HelloWorldException" name="HelloWorldException">
</wsdl:part>
</wsdl:message>
<wsdl:message name="printAndAnswerResponse">
<wsdl:part element="tns:printAndAnswerResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="badMethodResponse">
<wsdl:part element="tns:badMethodResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getBytesResponse">
<wsdl:part element="tns:getBytesResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="printResponse">
<wsdl:part element="tns:printResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getBytes">
<wsdl:part element="tns:getBytes" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="print">
<wsdl:part element="tns:print" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="FcServicePortType">
<wsdl:operation name="print">
<wsdl:input message="tns:print" name="print">
</wsdl:input>
<wsdl:output message="tns:printResponse" name="printResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getBytes">
<wsdl:input message="tns:getBytes" name="getBytes">
</wsdl:input>
<wsdl:output message="tns:getBytesResponse"
name="getBytesResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="printAndAnswer">
<wsdl:input message="tns:printAndAnswer" name="printAndAnswer">
</wsdl:input>
<wsdl:output message="tns:printAndAnswerResponse"
name="printAndAnswerResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="badMethod">
<wsdl:input message="tns:badMethod" name="badMethod">
</wsdl:input>
<wsdl:output message="tns:badMethodResponse"
name="badMethodResponse">
</wsdl:output>
<wsdl:fault message="tns:HelloWorldException"
name="HelloWorldException">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="FcServiceSoapBinding" type="tns:FcServicePortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="print">
<soap:operation soapAction="" style="document" />
<wsdl:input name="print">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="printResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getBytes">
<soap:operation soapAction="" style="document" />
<wsdl:input name="getBytes">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="getBytesResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="printAndAnswer">
<soap:operation soapAction="" style="document" />
<wsdl:input name="printAndAnswer">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="printAndAnswerResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="badMethod">
<soap:operation soapAction="" style="document" />
<wsdl:input name="badMethod">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="badMethodResponse">
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="HelloWorldException">
<soap:fault name="HelloWorldException" use="literal" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="FcService">
<wsdl:port binding="tns:FcServiceSoapBinding" name="FcServicePort">
<soap:address location="http://localhost:8080/Service" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I generate the the stub classes. Then, on the client-side, executing this code:
private FcServicePortType service ..//initialiation
final AnyType2AnyTypeMap p = new AnyType2AnyTypeMap();
byte[] b = service.getBytes(p, "hello".getBytes());
the call to getBytes() throws this NPE on the server-side:
Apr 30, 2009 3:27:56 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault
at
org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XMLStreamDataReader.java:63)
at
org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XMLStreamDataReader.java:38)
at
org.apache.cxf.interceptor.DocLiteralInInterceptor.getPara(DocLiteralInInterceptor.java:242)
at
org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:120)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265)
at
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:396)
at
org.apache.cxf.aegis.type.collection.MapType.readObject(MapType.java:87)
at
org.apache.cxf.aegis.AegisXMLStreamDataReader.read(AegisXMLStreamDataReader.java:82)
at
org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XMLStreamDataReader.java:61)
... 19 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.