You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Colm O hEigeartaigh (Jira)" <ji...@apache.org> on 2026/09/30 19:06:00 UTC
[jira] [Resolved] (CXF-8305) WSDL2Java generates java code that won't compile for array of byte arrays
[ https://issues.apache.org/jira/browse/CXF-8305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colm O hEigeartaigh resolved CXF-8305.
--------------------------------------
Resolution: Fixed
> 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.20.10#820010)