3 Replies Latest reply on Jul 9, 2007 11:40 AM by Justin Bertram

    "ArrayOf" parameter types generating BindingExceptions

    Justin Bertram Newbie

      I am using a "Top Down" (aka wsdl-to-java) approach to create a JSR109 endpoint with JBossWS 1.2.1.GA.

      The WSDL that was provided to me contains things like:

       <s:complexType name="FieldSelection">
       <s:sequence>
       <s:element minOccurs="0" maxOccurs="1" name="FieldName" type="s:string" />
       <s:element minOccurs="0" maxOccurs="1" name="Values" type="tns:ArrayOfString" />
       </s:sequence>
       </s:complexType>
       <s:complexType name="ArrayOfString">
       <s:sequence>
       <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
       </s:sequence>
       </s:complexType>
      


      My wstools-config.xml is:

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration xmlns="http://www.jboss.org/jbossws-tools">
       <wsdl-java location="services.wsdl" parameter-style="bare">
       <mapping file="mapping.xml" />
       </wsdl-java>
      </configuration>
      


      Running the wstools Ant task finishes without a problem. Both the code and mapping document are generated without error.

      However, when I deploy the service and try to invoke it I get a BindingException saying that the ArrayOfString class cannot be found. Upon inspection of the generated classes there isn't a ArrayOfString.java file nor any references to a ArrayOfString object in FieldSelection.java. FieldSelection uses the actual array type "String[]".

      When I look at the mapping.xml I see this:

      <java-xml-type-mapping>
       <java-type>ArrayOfString</java-type>
       <root-type-qname xmlns:typeNS='http://www.domain.com/projname/services'>typeNS:ArrayOfString</root-type-qname>
       <qname-scope>complexType</qname-scope>
       <variable-mapping>
       <java-variable-name>string</java-variable-name>
       <xml-element-name>string</xml-element-name>
       </variable-mapping>
       </java-xml-type-mapping>
      


      When I remove this snippet from the mapping.xml everything works fine.

      Is this appropriate behavior?