axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antanas Radzius (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-2380) String constructor is not generated for classes derived from simple types.
Date Mon, 23 Jan 2006 12:50:09 GMT
String constructor is not generated for classes derived from simple types.
--------------------------------------------------------------------------

         Key: AXIS-2380
         URL: http://issues.apache.org/jira/browse/AXIS-2380
     Project: Apache Axis
        Type: Bug
  Components: Serialization/Deserialization, WSDL processing  
    Versions: 1.3    
    Reporter: Antanas Radzius


Location of bad code:
Class: org.apache.axis.wsdl.toJava.JavaBeanWriter
Method: writeSimpleConstructors()

Relevant code snipet from from writeSimpleConstructors():

        // Simple types without simpleValueTypes are derived classes.
        // Inherit the simple constructor.
        if (simpleValueTypes.size() == 0)
        {
           if (extendType != null)
           {
               // Find the java type of the most base type.
               TypeEntry baseType = type;
               while (true)
               {
                   TypeEntry superType = SchemaUtils.getBaseType(
                       baseType, emitter.getSymbolTable());
                   if (superType == null)
                       break;
                   else
                       baseType = superType;
               }

               String baseJavaType = baseType.getName();

               pw.println("    public " + className + "("
                       + baseJavaType + " _value) {");
               pw.println("        super(_value);");
               pw.println("    }");
               pw.println();
           }
        }

It doesnt generate string constructor for this case and as result serialzation/deserialization
is broken for such generated classes.

Sample WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by ah (ee) -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://unions.test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://unions.test"
name="Untitled">
	<types>
		<xsd:schema targetNamespace="http://unions.test" xmlns:tns="http://unions.test" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
			<xsd:simpleType name="TestUnion">
				<xsd:union memberTypes="xsd:int xsd:string"/>
                        </xsd:simpleType>
			<xsd:complexType name="TestUnion_ID">
				<xsd:simpleContent>
					<xsd:extension base="tns:TestUnion">
						<xsd:attribute name="id" type="xsd:ID"/>
					</xsd:extension>
				</xsd:simpleContent>
			</xsd:complexType>
			<xsd:simpleType name="TestDateUnion">
				<xsd:union memberTypes="xsd:date xsd:gYear"/>
                        </xsd:simpleType>
			<xsd:element name="TestUnionRequest" type="tns:TestUnion"/>
			<xsd:element name="TestUnionResponse" type="tns:TestUnion_ID"/>
			<xsd:element name="TestDateUnionRequest" type="tns:TestDateUnion"/>
			<xsd:element name="TestDateUnionResponse" type="tns:TestDateUnion"/>
		</xsd:schema>
	</types>
	<message name="TestResponseMsg">
		<part name="parameter" element="tns:TestUnionResponse"/>
	</message>
	<message name="TestRequestMsg">
		<part name="parameter" element="tns:TestUnionRequest"/>
	</message>
	<message name="TestDateUnionRequestMsg">
		<part name="parameter" element="tns:TestDateUnionRequest"/>
	</message>
	<message name="TestDateUnionResponseMsg">
		<part name="parameter" element="tns:TestDateUnionResponse"/>
	</message>
	<portType name="TestUnions">
		<operation name="TestOperation">
			<input message="tns:TestRequestMsg"/>
			<output message="tns:TestResponseMsg"/>
		</operation>
		<operation name="TestOperation2">
			<input message="tns:TestDateUnionRequestMsg"/>
			<output message="tns:TestDateUnionResponseMsg"/>
		</operation>
	</portType>
	<binding name="TestUnionsBinding" type="tns:TestUnions">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="TestOperation">
			<soap:operation soapAction="capeconnect:TestService:TestUnions#TestOperation" style="document"/>
			<input>
				<soap:body use="literal" namespace="http://unions/binding"/>
			</input>
			<output>
				<soap:body use="literal" namespace="http://unions/binding"/>
			</output>
		</operation>
		<operation name="TestOperation2">
			<soap:operation soapAction="capeconnect:TestService:TestUnions#TestOperation2" style="document"/>
			<input>
				<soap:body use="literal" namespace="http://unions/binding"/>
			</input>
			<output>
				<soap:body use="literal" namespace="http://unions/binding"/>
			</output>
		</operation>
	</binding>
	<service name="TestUnionstService">
		<port name="TestUnionsPort" binding="tns:TestUnionsBinding">
			<soap:address location="http://localhost:80/axis/services/TestUnionsPort"/>
		</port>
	</service>
</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


Mime
View raw message