[ 
https://issues.apache.org/jira/browse/AXIS-2737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

deepak laul updated AXIS-2737:
------------------------------

    Comment: was deleted

(was: Hi Pralhad, 

I am also encountering the same issue with xs:choice. Would it be possible for 
you to share some thoughts/Code snippet, or if you can guide me to the right 
direction)
    
> Incorrect Validation for optional sequences and choices (in case 
> nillable="false")
> ----------------------------------------------------------------------------------
>
>                 Key: AXIS-2737
>                 URL: https://issues.apache.org/jira/browse/AXIS-2737
>             Project: Axis
>          Issue Type: Bug
>    Affects Versions: 1.4
>         Environment: Win32, JDK 1.5
>            Reporter: Ronny Karallus
>            Priority: Blocker
>         Attachments: wsdl.zip
>
>
> The validation inside Axis, checking the conformance of an object before 
> rendering it to XML, does not work correctly for the following WSDL message 
> parameter constructs:
> 1) A Choice, containing a sequence as one option, for example
>               <xs:complexType>
>                       <xs:sequence>
>                               <xs:choice>
>                                       <xs:sequence>
>                                               <xs:element name="country" 
> type="xs:string" default="+49"/>
>                                               <xs:element name="short" 
> type="xs:string"/>
>                                       </xs:sequence>
>                                       <xs:element name="long" 
> type="xs:string"/>
>                               </xs:choice>
>                               <xs:element name="number" type="xs:string"/>
>                       </xs:sequence>
>               </xs:complexType>
> 2) A sequence, containing an optional sequence, for example:
>         <xs:complexType>
>           <xs:sequence>
>             <xs:sequence>
>               <xs:sequence minOccurs="0">
>                 <xs:element name="country" type="xs:string" default="+49"/>
>                 <xs:element name="short" type="xs:string"/>
>               </xs:sequence>
>               <xs:element name="long" type="xs:string" minOccurs="0"/>
>             </xs:sequence>
>             <xs:element name="number" type="xs:string"/>
>           </xs:sequence>
>         </xs:complexType>
> To show the problem the Java Stubs are generated using WSDL2Java and the 
> invoke method is called using the following code:
>               LesenSoapBindingStub service = (LesenSoapBindingStub) (new 
> LesenServiceLocator()).getLesen(new 
> java.net.URL("http://localhost:8080/service/Lesen";));
>               
>               LesenRequest lesen = new LesenRequest();
>               lesen.set_long("0000");
>               lesen.setNumber("0000");
>               
>               service.invoke(lesen);
> Obviously this should be possible by the WSDL, because it is the second 
> option of the choice. Be aware that the code works, if you use the other 
> option, setting country/short and setting long null. If you use it this way, 
> the following exception is thrown:
> 14.04.2008 16:39:17 org.apache.axis.encoding.ser.BeanSerializer serialize
> SCHWERWIEGEND: Exception:
> java.io.IOException: Non nillable element 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at 
> org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
>       at org.apache.axis.Message.getContentType(Message.java:486)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
> 14.04.2008 16:39:17 org.apache.axis.attachments.AttachmentsImpl 
> getAttachmentCount
> WARNUNG: Exception:
> AxisFault
>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode: 
>  faultString: java.io.IOException: java.io.IOException: Non nillable element 
> 'country' is null.
>  faultActor: 
>  faultNode: 
>  faultDetail: 
>       {http://xml.apache.org/axis/}stackTrace:java.io.IOException: 
> java.io.IOException: Non nillable element 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:275)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at 
> org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
>       at org.apache.axis.Message.getContentType(Message.java:486)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
>       {http://xml.apache.org/axis/}hostname:WUM03029
> java.io.IOException: java.io.IOException: Non nillable element 'country' is 
> null.
>       at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at 
> org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
>       at org.apache.axis.Message.getContentType(Message.java:486)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
> Caused by: java.io.IOException: java.io.IOException: Non nillable element 
> 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:275)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       ... 17 more
> 14.04.2008 16:39:17 org.apache.axis.encoding.ser.BeanSerializer serialize
> SCHWERWIEGEND: Exception:
> java.io.IOException: Non nillable element 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
>       at org.apache.axis.Message.getContentLength(Message.java:510)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
> Exception in thread "main" AxisFault
>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode: 
>  faultString: java.io.IOException: java.io.IOException: Non nillable element 
> 'country' is null.
>  faultActor: 
>  faultNode: 
>  faultDetail: 
>       {http://xml.apache.org/axis/}stackTrace:java.io.IOException: 
> java.io.IOException: Non nillable element 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:275)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
>       at org.apache.axis.Message.getContentLength(Message.java:510)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
>       {http://xml.apache.org/axis/}hostname:WUM03029
> java.io.IOException: java.io.IOException: Non nillable element 'country' is 
> null.
>       at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>       at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>       at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
>       at org.apache.axis.Message.getContentLength(Message.java:510)
>       at 
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
>       at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>       at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>       at org.apache.axis.client.Call.invoke(Call.java:2767)
>       at org.apache.axis.client.Call.invoke(Call.java:2443)
>       at org.apache.axis.client.Call.invoke(Call.java:2366)
>       at org.apache.axis.client.Call.invoke(Call.java:1812)
>       at 
> de.webservice.LesenSoapBindingStub.invoke(LesenSoapBindingStub.java:177)
>       at Test.main(Test.java:30)
> Caused by: java.io.IOException: java.io.IOException: Non nillable element 
> 'country' is null.
>       at 
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:275)
>       at 
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
>       at 
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
>       at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
>       at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>       at 
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
>       at 
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>       at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>       ... 17 more
> Obviously the validation doesn't work correctly here. It seems as if the 
> choice or sequence tags, telling that short and country do not need to be 
> provided, are ignored on validation (see the attached example WSDLs).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to