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)