[
https://issues.apache.org/jira/browse/AXIS-2386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513752
]
Lord Halbert edited comment on AXIS-2386 at 7/18/07 4:35 PM:
-------------------------------------------------------------
One way to fix it is by changing the following class:
org.apache.axis.wsdl.toJava.JavaBeanHelperWriter
You'll see at line 329 (Apache Axis 1.4 source):
// Some special handling for arrays.
TypeEntry elemType = elem.getType();
QName xmlType = null;
if ((elemType.getDimensions().length() > 1)
&& (elemType.getClass() == DefinedType.class)) {
// If we have a DefinedType with dimensions, it must
// be a SOAP array derived type. In this case, use
// the refType's QName for the metadata.
// I COMMENTED OUT THIS LINE TO FIX THE ISSUE
// elemType = elemType.getRefType();
I commented out the line at the end.
That seems to have fixed the issue but it's unclear what other problems this
"hack" of mine created.
Don't worry, I did not commit any changes :)
The author(s) obviously created that code for a reason even though it created a
problem.
Thanks for the quick reply Glen Daniels. I'll try out your changes you made to
see if it works.
was:
One way to fix it is by changing the following class:
org.apache.axis.wsdl.toJava.JavaBeanHelperWriter
You'll see at line 329 (Apache Axis 1.4 source):
// Some special handling for arrays.
TypeEntry elemType = elem.getType();
QName xmlType = null;
if ((elemType.getDimensions().length() > 1)
&& (elemType.getClass() == DefinedType.class)) {
// If we have a DefinedType with dimensions, it must
// be a SOAP array derived type. In this case, use
// the refType's QName for the metadata.
// I COMMENTED OUT THIS LINE TO FIX THE ISSUE
// elemType = elemType.getRefType();
I commented out the line at the end.
That seems to have fixed the issue but it's unclear what other problems this
"hack" of mine created.
Don't worry, I did not commit any changes :)
The author(s) obviously created that code for a reason even though it created a
problem.
Thanks for the quick reply (the previous poster) and I'll try out your changes
you made to see if it works.
> Java2WSDL changes type double array into a single double.
> ---------------------------------------------------------
>
> Key: AXIS-2386
> URL: https://issues.apache.org/jira/browse/AXIS-2386
> Project: Axis
> Issue Type: Bug
> Components: WSDL processing
> Affects Versions: 1.2, 1.2.1, 1.3, 1.4
> Environment: Linux 2.4.26, java version "1.5.0_04", Tomcat 5.5
> Reporter: Eric Webster
> Priority: Blocker
> Attachments: DataSet.wsdl, IncorrectDataSet.wsdl
>
>
> Java2WSDL changes type double array into a single double.
> This happens when you run Java2WSDL manually on the command line or when a
> wsdl file is generated from a service_name?wsdl url.
> Currently to fix this I just manually edit the generated WSDL file and
> distrobute that.
> The Java code originally came from a hand made WSDL file. WSDL2Java was used
> to generate the Java code. The section that is affected by this problem is
> the 'ValueVector' complexType which contains and element 'values' which is an
> array of doubles. After converting to Java and then back to WSDL 'values'
> becomes a single double.
> Here is the original WSDL file.
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions
> targetNamespace="dataset.odin.cirg.washington.edu"
> xmlns:apachesoap="http://xml.apache.org/xml-soap"
> xmlns:impl="dataset.odin.cirg.washington.edu"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <wsdl:types>
> <schema targetNamespace="dataset.odin.cirg.washington.edu"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>
> <complexType name="ArrayOf_xsd_double">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:double[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="ArrayOf_xsd_string">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
> </restriction>
> </complexContent>
> </complexType>
>
> <simpleType name="TypeEnum">
> <restriction base="xsd:string">
> <enumeration value="count"/>
> <enumeration value="flag"/>
> <enumeration value="score"/>
> <enumeration value="blank"/>
> <enumeration value="error"/>
> <enumeration value="other"/>
> <enumeration value="unknown"/>
> </restriction>
> </simpleType>
> <simpleType name="IntervalUnitEnum">
> <restriction base="xsd:string">
> <enumeration value="second"/>
> <enumeration value="week"/>
> <enumeration value="month"/>
> <enumeration value="year"/>
> </restriction>
> </simpleType>
> <complexType name="Attribute">
> <sequence>
> <element name="name" type="xsd:string"/>
> <element name="value" type="xsd:string" nillable="true"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOf_impl_Attribute">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="impl:Attribute[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="ValueVector">
> <sequence>
> <element name="name" type="xsd:string" nillable="true"/>
> <element name="type" type="impl:TypeEnum"/>
> <element name="date" type="xsd:string"/>
> <element name="interval" type="xsd:int"/>
> <element name="intervalUnit" type="impl:IntervalUnitEnum"/>
> <element name="attributes" type="impl:ArrayOf_impl_Attribute"
> nillable="true"/>
> <element name="values" type="impl:ArrayOf_xsd_double"
> nillable="true"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOf_impl_ValueVector">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="impl:ValueVector[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="DataSet">
> <sequence>
> <element name="name" type="xsd:string" nillable="true"/>
> <element name="attributes" type="impl:ArrayOf_impl_Attribute"
> nillable="true"/>
> <element name="vectors" type="impl:ArrayOf_impl_ValueVector"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOf_impl_DataSet">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:DataSet[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="DataSetArray">
> <sequence>
> <element name="array" type="impl:ArrayOf_impl_DataSet"/>
> </sequence>
> </complexType>
> <complexType name="SurvCol">
> <sequence>
> <element name="name" type="xsd:string"/>
> <element name="values" type="impl:ArrayOf_xsd_string"/>
> <element name="attributes" type="impl:ArrayOf_impl_Attribute"
> nillable="true"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOf_impl_SurvCol">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:SurvCol[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="SurvDataSet">
> <sequence>
> <element name="name" type="xsd:string" nillable="true"/>
> <element name="attributes" type="impl:ArrayOf_impl_Attribute"
> nillable="true"/>
> <element name="vectors" type="impl:ArrayOf_impl_SurvCol"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOf_impl_SurvDataSet">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="impl:SurvDataSet[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="SurvDataSetArray">
> <sequence>
> <element name="array" type="impl:ArrayOf_impl_SurvDataSet"/>
> </sequence>
> </complexType>
> </schema>
> </wsdl:types>
> </wsdl:definitions>
> Here is what 'ValueVector' turns into after running WSDL2Java (which creates
> correct java code) and then Java2WSDL.
> <complexType name="ValueVector">
> <sequence>
> <element name="name" nillable="true" type="xsd:string"/>
> <element name="type" type="tns2:TypeEnum"/>
> <element name="date" type="xsd:string"/>
> <element name="interval" type="xsd:int"/>
> <element name="intervalUnit" type="tns2:IntervalUnitEnum"/>
> <element name="attributes" nillable="true"
> type="impl:ArrayOf_tns1_Attribute"/>
> <element name="values" nillable="true" type="xsd:double"/>
> </sequence>
> </complexType>
--
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]