[
https://issues.apache.org/jira/browse/CXF-8305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Armstrong updated CXF-8305:
---------------------------------
Attachment: test.zip
> WSDL2Java generates java code that won't compile for array of byte arrays
> -------------------------------------------------------------------------
>
> Key: CXF-8305
> URL: https://issues.apache.org/jira/browse/CXF-8305
> Project: CXF
> Issue Type: Bug
> Components: Tooling
> Affects Versions: 3.3.6
> Reporter: Steve Armstrong
> Priority: Critical
> Attachments: test.zip
>
>
> I am using a wsdl snippet that looks like the following:
> {code:xml}
> <xsd:complexType name="CACertificateLDAPGetResult">
> <xsd:annotation>
> <xsd:documentation>
> Defines the results of a caCertificateLDAPGet
> operation
> </xsd:documentation>
> </xsd:annotation>
> <xsd:sequence>
> <xsd:element name="Binary" type="xsd:boolean"
> nillable="true">
> <xsd:annotation>
> <xsd:documentation>
> Indicates whether the returns attribute is
> string data or binary data.
> True if the attribute is binary.
> </xsd:documentation>
> </xsd:annotation>
> </xsd:element>
> <xsd:element name="StringAttribute" maxOccurs="unbounded"
> minOccurs="0" type="xsd:string" nillable="true" >
> <xsd:annotation>
> <xsd:documentation>
> A list of the strings found at a string
> attribute.
> </xsd:documentation>
> </xsd:annotation>
> </xsd:element>
> <xsd:element name="BinaryAttribute" maxOccurs="unbounded"
> minOccurs="0" type="xsd:base64Binary"
> nillable="true" >
> <xsd:annotation>
> <xsd:documentation>
> A list of the base64 encoded data found at a
> binary attribute.
> </xsd:documentation>
> </xsd:annotation>
> </xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> {code}
> In is the BinaryAttribute above that is of interest.
> When this gets compiled using WSDL2Java and Java 8 with
> collectionType="indexed", the following code snipped is produced.
>
> {code:java}
> /**
> *
> *
> * @param values
> * allowed objects are
> * byte[]
> */
> public void setBinaryAttribute(byte[][] values) {
> int len = values.length;
> this.binaryAttribute = ((byte[][]) new byte[][len] );
> for (int i = 0; (i<len); i ++) {
> this.binaryAttribute[i] = ((byte[]) values[i]);
> }
> }
> {code}
> Clearly, this is invalid Java since you need to set len on the first
> dimension of the array, not the second.
> Java can't compile the code generated by WSDL2Java so that's the end of
> things.
> If you know of any work-around (other than *not* using
> collectionType="indexed", please let me know. Thanks!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)