tree 8bed0b69b0f4a9ee8084e110f2b0b1fc92d66a79
parent ba3fc56045d3795a055fc52f7691a9ca440d7326
author Davanum Srinivas <dims@apache.org> 1250861242 +0000
committer Davanum Srinivas <dims@apache.org> 1250861242 +0000

Fix for the following stack trace:

                                 java.lang.IllegalStateException: The prefix xs is not bound.
	at org.apache.ws.commons.schema.SchemaBuilder.getRefQName(SchemaBuilder.java:671)
	at org.apache.ws.commons.schema.SchemaBuilder.getRefQName(SchemaBuilder.java:644)
	at org.apache.ws.commons.schema.SchemaBuilder.handleElement(SchemaBuilder.java:1487)
	at org.apache.ws.commons.schema.SchemaBuilder.handleSequence(SchemaBuilder.java:1045)
	at org.apache.ws.commons.schema.SchemaBuilder.handleComplexType(SchemaBuilder.java:739)
	at org.apache.ws.commons.schema.SchemaBuilder.handleElement(SchemaBuilder.java:1514)
	at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:291)
	at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:412)
	at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:144)
	at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2317)
	at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:413)
	at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:430)
	at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:402)
	at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:346)
	at org.apache.axis2.jaxws.description.impl.EndpointDescriptionImpl.buildAxisServiceFromWSDL(EndpointDescription

In Axis2's WSDL11ToAxisBuilder.java, there is code that converts from multiple message parts like so

    <wsdl:message name="testMultipleSwAResponseMsg">
        <wsdl:part name="testOutputSwA" type="bons1:TestBO"/>
        <wsdl:part name="swaOutput1" type="xsd:hexBinary"/>
        <wsdl:part name="swaOutput2" type="xsd:hexBinary"/>
        <wsdl:part name="swaOutput3" type="xsd:base64Binary"/>
    </wsdl:message>

into XML Schema based ComplexType(s). Basically a new ComplexType is created with a XMLSchema sequence inside
which you would see all the 4 parts. During this processing there is a code path where we lose fact that xsd 
prefix is mapped to xml schema namespace and it ends up using a xs as the prefix instead of xsd and the 
subsequent issue with xs prefix not found. This happens bec ause the complex type is created in the top level 
wsdl which has no declaration for xmlns:xsd or xmlns:xs 




git-svn-id: https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/XmlSchema@806543 13f79535-47bb-0310-9956-ffa450edef68
