You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/06/27 22:44:06 UTC

DO NOT REPLY [Bug 10300] New: - Bean deserialize for complex types does not work

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10300>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10300

Bean deserialize for complex types does not work

           Summary: Bean deserialize for complex types does not work
           Product: Axis
           Version: beta-2
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Basic Architecture
        AssignedTo: axis-dev@xml.apache.org
        ReportedBy: mjanssens@sidestep.com


I have the following type defined:

public class SbTravelRequest implements Serializable
{
    public String                requestOr;
    public String                homeCountry;

    public String                departureLocation;
    public String                destinationLocation;

    public GregorianCalendar     startDate;
    public GregorianCalendar     endDate;

    public String                searchTypes;
    public String                searchParams;
    public String                searchHints;

    public SbSupplier[]          supPliers;
}

and

public class SbSupplier implements Serializable
{
    public Integer searchType;
    public String  supplierCode;
    public String  chanNel;
}

The following deployment descriptor is used:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <beanMapping qname="ss:SbTravelRequest" 
xmlns:ss="http://www.sidestep.com/sbws"
               languageSpecificType="java:sidestep.search.SbTravelRequest"/>

  <beanMapping qname="ss:SbSupplier" xmlns:ss="http://www.sidestep.com/sbws"
               languageSpecificType="java:sidestep.search.SbSupplier"/>

</deployment>

The typemappings are added to the call properly.

Everything works fine as long as the SbSupplier[] supPliers field in 
SbTravelRequest is set to null. When I set it to a single element array, the 
deserialization blows up:

The SOAP message to the server:

POST /sbws/jws/search.jws HTTP/1.0
Content-Length: 1688
Host: localhost
Content-Type: text/xml; charset=utf-8
SOAPAction: ""

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-
ENC="http://schemas.xmlsoap.org/soap/encoding/">
 <SOAP-ENV:Body>
  <startSearch>
   <arg0 href="#id0"/>
  </startSearch>
  <multiRef id="id0" SOAP-ENC:root="0" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xsi:type="ns2:SbTravelRequest" 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/:encodingStyle" 
xmlns:ns2="http://www.sidestep.com/sbws">
   <requestOr xsi:type="xsd:string">SOAP test 1</requestOr>
   <homeCountry xsi:type="xsd:string">US</homeCountry>
   <departureLocation xsi:type="xsd:string">SJC</departureLocation>
   <destinationLocation xsi:type="xsd:string">ATL</destinationLocation>
   <startDate xsi:type="xsd:dateTime">2002-08-10T13:42:24.024Z</startDate>
   <endDate xsi:type="xsd:dateTime">2002-06-27T13:42:24.024Z</endDate>
   <searchTypes xsi:type="xsd:string">AIR:RTACR</searchTypes>
   <searchParams xsi:nil="true"/>
   <searchHints xsi:nil="true"/>
   <supPliers xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="ns2:SbSupplier[1]">
    <item href="#id1"/>
   </supPliers>
  </multiRef>
  <multiRef id="id1" SOAP-ENC:root="0" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xsi:type="ns3:SbSupplier" xmlns:ns3="http://www.sidestep.com/sbws">
   <searchType xsi:type="xsd:int">0</searchType>
   <supplierCode xsi:type="xsd:string">**</supplierCode>
   <chanNel xsi:type="xsd:string">**</chanNel>
  </multiRef>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The generated error and stack trace:

- Could not convert java.lang.Integer to bean field 'searchType', type 
java.lang.Integer
- Exception:
java.lang.NullPointerException
java.lang.NullPointerException
	at org.apache.axis.encoding.ser.BeanPropertyTarget.set
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/ser/BeanPropertyTarget.java:130)
	at org.apache.axis.encoding.DeserializerImpl.valueComplete
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializerImpl.java:258)
	at org.apache.axis.encoding.DeserializerImpl.endElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializerImpl.java:504)
	at org.apache.axis.encoding.DeserializationContextImpl.endElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java:875)
	at org.apache.axis.message.SAX2EventRecorder.replay
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/SAX2EventRecorder.java:205)
	at org.apache.axis.message.MessageElement.publishToHandler
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/MessageElement.java:589)
	at org.apache.axis.encoding.DeserializerImpl.startElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializerImpl.java:370)
	at org.apache.axis.encoding.DeserializationContextImpl.startElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java:844)
	at org.apache.axis.message.SAX2EventRecorder.replay
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/SAX2EventRecorder.java:199)
	at org.apache.axis.message.MessageElement.publishToHandler
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/MessageElement.java:589)
	at org.apache.axis.encoding.DeserializerImpl.startElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializerImpl.java:370)
	at org.apache.axis.encoding.DeserializationContextImpl.startElement
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/encoding/DeserializationContextImpl.java:844)
	at org.apache.axis.message.SAX2EventRecorder.replay
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/SAX2EventRecorder.java:199)
	at org.apache.axis.message.MessageElement.publishToHandler
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/MessageElement.java:589)
	at org.apache.axis.message.RPCElement.deserialize
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/RPCElement.java:224)
	at org.apache.axis.message.RPCElement.getParams(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/message/RPCElement.java:248)
	at org.apache.axis.providers.java.RPCProvider.processMessage
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/providers/java/RPCProvider.java:150)
	at org.apache.axis.providers.java.JavaProvider.invoke
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/providers/java/JavaProvider.java:262)
	at org.apache.axis.strategies.InvocationStrategy.visit
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/strategies/InvocationStrategy.java:71)
	at org.apache.axis.SimpleChain.doVisiting(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/SimpleChain.java:154)
	at org.apache.axis.SimpleChain.invoke(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/SimpleChain.java:121)
	at org.apache.axis.handlers.JWSProcessor.invokeImpl
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/handlers/JWSProcessor.java:288)
	at org.apache.axis.handlers.JWSProcessor.invoke(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/handlers/JWSProcessor.java:106)
	at org.apache.axis.strategies.InvocationStrategy.visit
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/strategies/InvocationStrategy.java:71)
	at org.apache.axis.SimpleChain.doVisiting(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/SimpleChain.java:154)
	at org.apache.axis.SimpleChain.invoke(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/SimpleChain.java:121)
	at org.apache.axis.server.AxisServer.invoke(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/server/AxisServer.java:288)
	at org.apache.axis.transport.http.AxisServlet.doPost
(C:/Marcel/Src/Java/xml-
axis/java/src/org/apache/axis/transport/http/AxisServlet.java:576)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:190)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2343)
	at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:170)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.valves.AccessLogValve.invoke
(AccessLogValve.java:468)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
	at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at org.apache.catalina.connector.http.HttpProcessor.process
(HttpProcessor.java:1012)
	at org.apache.catalina.connector.http.HttpProcessor.run
(HttpProcessor.java:1107)
	at java.lang.Thread.run(Thread.java:484)