Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-2386

Java2WSDL changes type double array into a single double.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Blocker
    • Resolution: Unresolved
    • 1.2, 1.2.1, 1.3, 1.4
    • None
    • WSDL processing
    • None
    • Not specific to an environment. It's only specific to the Axis version used.

    Description

      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>

      Attachments

        1. DataSet.wsdl
          5 kB
          Eric Webster
        2. IncorrectDataSet.wsdl
          15 kB
          Eric Webster
        3. test.wsdl
          2 kB
          Lord Halbert

        Activity

          People

            Unassigned Unassigned
            ericweb Eric Webster
            Votes:
            5 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated: