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.