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 "Daniel Kador (JIRA)" <ax...@ws.apache.org> on 2005/06/30 18:52:02 UTC

[jira] Created: (AXIS-2096) Custom simpleType as attribute of an element causes problems when displaying deployed service's WSDL

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


[jira] Commented: (AXIS-2096) Custom simpleType as attribute of an element causes problems when displaying deployed service's WSDL

Posted by "Daniel Kador (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2096?page=comments#action_12314813 ] 

Daniel Kador commented on AXIS-2096:
------------------------------------

I have a little additional input.  I think the potential issue lies in the WSDL2Java code.  I've also discovered that it's more restrictive than I initially thought - the custom simpleType NEEDS to have an enumeration.  Without an enum, WSDL2Java doesn't emit a class for that simpleType, and Axis gets confused when trying to view the deployed service's WSDL.  I think an appropriate bugfix would be to have a class always generated for simpleTypes, even if they don't have enumerated values.  Another option would be to fix the validating code so that when the WSDL is generated by the webservice, it knows that the custom simpleType is, in fact, a simpleType.  It doesn't work if a custom class has not been emitted.

> 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


[jira] Commented: (AXIS-2096) Custom simpleType as attribute of an element causes problems when displaying deployed service's WSDL

Posted by "Frederick N. Brier (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2096?page=comments#action_12451201 ] 
            
Frederick N. Brier commented on AXIS-2096:
------------------------------------------

I am just going to add a little more to what my investigations to what seems like the same problem.  Enumeration restrictions cause a new Java class to be generated which means problems trying to specify a Java primitive which does not have, nor need a serializer/deserializer using SimpleSerializerFactory/SimpleDeserializerFactory.  In addition, this looks a lot like JIRA bug#AXIS-2227, so perhaps we can kill two birds with one stone.

WSDL2Java is generating incorrect code in 3 places: deploy.wsdd, the *BindingStub.java, and the bean containing the string with the restriction base on it.  When I modify these files as described below, the problem goes away.  I have hacked out a patch for the moment so I can get my current task done, but the problem really requires taking the time to understand the underlying data model for the WSDL and schema, which I have not yet done.

The problem with the deploy.wsdd is in JavaDeployWriter.java, method writeDeployTypes() is that mappings like the one below are being generated:

      <typeMapping
        xmlns:ns="http://schemas.mycompany.com/mynamespace"
        qname="ns:MyStringType"
        type="java:java.lang.String"
        serializer="org.apache.axis.encoding.ser.SimpleSerializerFactory"
        deserializer="org.apache.axis.encoding.ser.SimpleDeserializerFactory"
        encodingStyle=""
      />

I added the following conditional which prevents it from being output for java.lang primitives:

                   if ( ! javaType.startsWith( "java.lang." ) )
                   {
                      //###FNB: Patch to stop output of primitives.
                    writeTypeMapping(pw, namespaceURI, localPart, javaType,
                        serializerFactory, deserializerFactory,
                        encodingStyle);
                   }

The problem in the *BindingStub.java file was caused by a problem in the JavaStubWriter.java.  It was outputting the following unnecessary lines:

            qName = new javax.xml.namespace.QName("http://schemas.omnilinksystems.com/xls", "CountryCodeType");
            cachedSerQNames.add(qName);
            cls = java.lang.String.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));
            cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));

I addressed this in the writeSerializationInit() method by sticking in these two lines:

       //###FNB: Stop generation of java.lang primitives.
       if ( type.getName().startsWith( "java.lang." ) )
         return;

The problem with the bean containing the string with the restriction base on it was the setXmlType() call:

        elemField.setXmlName(new javax.xml.namespace.QName("http://schemas.omnilinksystems.com/xls", "MyString"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://schemas.omnilinksystems.com/xls", "MyStringType"));

The second line should actually be:

        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));

In JavaBeanHelperWriter.java, in the writeMetaData() method, I added this conditional.  This by the way is a BUG in waiting.  Restrictions on other primitive types will barf all over this.  I just don't have the time until after Thankgiving to look at underlying Axis schema model..

                      //###FNB: Attempt to fix bug in restriction types for strings.
                         if ( elemType.getName().startsWith( "java.lang.String" ) )
                         {
                            pw.println("        elemField.setXmlType( new javax.xml.namespace.QName(\"http://www.w3.org/2001/XMLSchema\", \"string\" ) );");
                         }
                         else
                         {
                            pw.println("        elemField.setXmlType("
                                    + Utils.getNewQName(xmlType) + ");");
                         }


Hopefully this will help the Axis developers if they want to fix this now, or some other developer who encounters this bug.  If I can get around to it, I will come up with a real fix and submit a patch.


> 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
>          Issue Type: Bug
>          Components: Serialization/Deserialization
>    Affects 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

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Commented: (AXIS-2096) Custom simpleType as attribute of an element causes problems when displaying deployed service's WSDL

Posted by "Daniel Kador (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2096?page=comments#action_12314802 ] 

Daniel Kador commented on AXIS-2096:
------------------------------------

I think I may have isolated why this occurs.  It appears that you can, in fact, create an attribute of a custom simpleType, but ONLY if it has some sort of enumeration (and probably if it has other such restrictions, i.e. on whitespace, length, etc.).  Since my schemas and examples do NOT have these additional restrictions, they don't work with Axis 1.2.1.  As soon as I added an enumeration to each simpleType, things worked with no problems.  As far as I know, having a simpleType with no enumeration or other facet is still legitimate for a schema, so I think this is a bug.

> 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


[jira] Commented: (AXIS-2096) Custom simpleType as attribute of an element causes problems when displaying deployed service's WSDL

Posted by "Diego Louzán (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2096?page=comments#action_12457814 ] 
            
Diego Louzán commented on AXIS-2096:
------------------------------------

I'm a commiter on Apache WSRP4J and this bug is preventing us from servicing the wsdl associated with the wsrp4j producer (with Axis 1.4). I don't know if the 1.x branch is still in development but a patch for this would be welcome.

> 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
>          Issue Type: Bug
>          Components: Serialization/Deserialization
>    Affects 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

       

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org