Custom simpleType as attribute of an element causes problems when displaying 
deployed service's WSDL
----------------------------------------------------------------------------------------------------

         Key: AXIS-2096
         URL: http://issues.apache.org/jira/browse/AXIS-2096
     Project: Apache Axis
        Type: Bug
  Components: Serialization/Deserialization  
    Versions: 1.2.1    
 Environment: WinXP, Tomcat 5.5.9, jdk1.5.0_03
    Reporter: Daniel Kador


If you create a WSDL similar to the one below in wrapped/literal style, you 
will not be able to create a complexType whose attribute is of a custom 
simpleType.  In the example below, the following error is listed when you try 
to view the deployed service's WSDL through the browser interface:

AXIS error

Sorry, something seems to have gone wrong... here are the details:

Fault - Bean attribute testAttribute is of type 
org.apache.axis.types.NormalizedString, which is not a simple type

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultSubcode: 
 faultString: Bean attribute testAttribute is of type 
org.apache.axis.types.NormalizedString, which is not a simple type
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}hostname:ORLIWG2H5Y61

I can fix the above error by changing the attribute type from "y:testAttribute" 
to "xs:normalizedString".  Is Axis designed to behave this way?  It's my 
understanding that XML allows for custom simpleTypes to be defined and then 
used as attributes, and the schemas I work with use this feature a good deal.  
They validate with no problems in XMLSpy.  The WSDL I use in this example is 
posted below.  

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";                 
                                                                        
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
                        xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
                        xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
                        xmlns:y="http://test.wsdl"; 
                        xmlns:types="http://test.wsdl/types";
                        targetNamespace="http://test.wsdl";>
        <wsdl:types>
                <xs:schema>
                        <xs:complexType name="testType">
                                <xs:sequence>
                                        <xs:element name="testElement" 
type="xs:normalizedString"/>
                                </xs:sequence>
                                <xs:attribute name="testAttribute" 
type="y:testAttribute"/>
                        </xs:complexType>
                        <xs:simpleType name="testAttribute">
                                <xs:restriction base="xs:normalizedString"/>
                        </xs:simpleType>
                        <xs:element name="testAction">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element name="testParam" 
type="y:testType"/>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>
                        <xs:element name="testActionResp">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element name="testResp" 
type="xs:string"/>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>
                </xs:schema>
        </wsdl:types>
        <wsdl:message name="testActionRequest">
                <wsdl:part name="parameters" element="y:testAction"/>
        </wsdl:message>
        <wsdl:message name="testActionResponse">
                <wsdl:part name="parameters" element="y:testActionResp"/>
        </wsdl:message>
        <wsdl:portType name="testPortType">
                <wsdl:operation name="testAction">
                        <wsdl:input message="y:testActionRequest"/>
                        <wsdl:output message="y:testActionResponse"/>
                </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="testSoapBinding" type="y:testPortType">
                <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document"/>
                <wsdl:operation name="testAction">
                        <wsdl:input>
                                <soap:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body use="literal"/>
                        </wsdl:output>
                </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="testService">
                <wsdl:port name="testPort" binding="y:testSoapBinding">
                        <soap:address 
location="http://localhost:8080/axis/services/testPort"/>
                </wsdl:port>
        </wsdl:service>
</wsdl:definitions>


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to