invalid code generated for xsd:any, 'Cannot read from closed stream'
--------------------------------------------------------------------
Key: AXIS2-3882
URL: https://issues.apache.org/jira/browse/AXIS2-3882
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: codegen
Affects Versions: 1.4
Environment: Linux, Gentoo, sun-jdk-1.6.0.06, ant 1.7.0
Reporter: Rafal Malinowski
I am using the following wsdl file:
<?xml version="1.0"?>
<definitions name="AuthenticationService"
targetNamespace="urn:liberty:ssos:2006-08"
xmlns:tns="urn:liberty:ssos:2006-08"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:S="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:ssos="urn:liberty:ssos:2006-08"
xmlns:samlp2="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:wsaw="http://www.w3.org/2006/02/addressing/wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
http://schemas.xmlsoap.org/wsdl/
http://www.w3.org/2006/02/addressing/wsdl
http://www.w3.org/2006/02/addressing/wsdl/ws-addr-wsdl.xsd">
<xsd:documentation>
The source code in this WSDL file was created and changed from:
Liberty ID-WSF Liberty ID-WSF Authentication, Single Sign-On, and Identity
Mapping Services Specification
Version 2.0-errata-v1.0
28 November, 2006
Copyright (c) 2007 Liberty Alliance participants, see
http://projectliberty.org/resource_center/specifications/liberty_alliance_id_wsf_2_0_specifications/idwsf_feb_copyrights
</xsd:documentation>
<message name="SSOSoapRequest">
<part name="parameters" element="xsd:any"/>
</message>
<message name="SSOSoapResponse">
<part name="parameters" element="xsd:any"/>
</message>
<portType name="SSOSPortType">
<operation name="SingleSignOn">
<input message="ssos:SSOSoapRequest"
wsaw:Action="urn:liberty:ssos:2006-08:AuthnRequest"/>
<output message="ssos:SSOSoapResponse"
wsaw:Action="urn:liberty:ssos:2006-08:Response"/>
</operation>
</portType>
<binding name="SSOSSoapBinding" type="ssos:SSOSPortType">
<S:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SingleSignOn">
<S:operation soapAction="urn:liberty:ssos:2006-08:SingleSignOn"
/>
<input>
<S:body use="literal"/>
</input>
<output>
<S:body use="literal"/>
</output>
</operation>
</binding>
<service name="SSOService">
<port name="SSOSPortType" binding="ssos:SSOSSoapBinding">
<S:address location="http://example.com/idmapping"/>
</port>
</service>
</definitions>
<?xml version="1.0"?>
<definitions name="AuthenticationService"
targetNamespace="urn:liberty:ssos:2006-08"
xmlns:tns="urn:liberty:ssos:2006-08"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:S="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:ssos="urn:liberty:ssos:2006-08"
xmlns:samlp2="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:wsaw="http://www.w3.org/2006/02/addressing/wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
http://schemas.xmlsoap.org/wsdl/
http://www.w3.org/2006/02/addressing/wsdl
http://www.w3.org/2006/02/addressing/wsdl/ws-addr-wsdl.xsd">
<xsd:documentation>
The source code in this WSDL file was created and changed from:
Liberty ID-WSF Liberty ID-WSF Authentication, Single Sign-On, and Identity
Mapping Services Specification
Version 2.0-errata-v1.0
28 November, 2006
Copyright (c) 2007 Liberty Alliance participants, see
http://projectliberty.org/resource_center/specifications/liberty_alliance_id_wsf_2_0_specifications/idwsf_feb_copyrights
</xsd:documentation>
<message name="SSOSoapRequest">
<part name="parameters" element="xsd:any"/>
</message>
<message name="SSOSoapResponse">
<part name="parameters" element="xsd:any"/>
</message>
<portType name="SSOSPortType">
<operation name="SingleSignOn">
<input message="ssos:SSOSoapRequest"
wsaw:Action="urn:liberty:ssos:2006-08:AuthnRequest"/>
<output message="ssos:SSOSoapResponse"
wsaw:Action="urn:liberty:ssos:2006-08:Response"/>
</operation>
</portType>
<binding name="SSOSSoapBinding" type="ssos:SSOSPortType">
<S:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SingleSignOn">
<S:operation soapAction="urn:liberty:ssos:2006-08:SingleSignOn"
/>
<input>
<S:body use="literal"/>
</input>
<output>
<S:body use="literal"/>
</output>
</operation>
</binding>
<service name="SSOService">
<port name="SSOSPortType" binding="ssos:SSOSSoapBinding">
<S:address location="http://example.com/idmapping"/>
</port>
</service>
</definitions>
It uses xsd:any element as return message. I'm trying to read it with the
following code:
OMElement response = ((SSOServiceStub) _stub).SingleSignOn(authnRequest);
System.out.println(response.toStringWithConsume());
(authRequest is of type OMElementImpl)
Using responseesponse.toString() I'm getting only part of oryginal xml node,
with toStringWithConsume it throws exception:
com.ctc.wstx.exc.WstxIOException: Attempted read on closed stream.
com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:683)
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1086)
org.apache.axiom.om.impl.llom.OMStAXWrapper.next(OMStAXWrapper.java:927)
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(StreamingOMSerializer.java:72)
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:57)
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:525)
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:795)
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:814)
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:358)
org.apache.axiom.om.impl.llom.OMElementImpl.toStringWithConsume(OMElementImpl.java:904)
After modifing the stub code
//execute the operation client
_operationClient.execute(true);
org.apache.axis2.context.MessageContext _returnMessageContext =
_operationClient.getMessageContext(
org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
org.apache.axiom.soap.SOAPEnvelope _returnEnv =
_returnMessageContext.getEnvelope();
java.lang.Object object = fromOM(
_returnEnv.getBody().getFirstElement() ,
org.apache.axiom.om.OMElement.class,
getEnvelopeNamespaces(_returnEnv));
*********************** added line ************************
object.toString(); // HACK
_messageContext.getTransportOut().getSender().cleanup(_messageContext);
return (org.apache.axiom.om.OMElement)object;
It works ok.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]