I've never tried from ant but I suppose you'd need to change wrapArrays="no" to wrapArrays="true" and take out noWrapped="true".

-wrapArrays is a new option, since Axis 1.3, and maybe it wasn't implemented into the ant task (few people need it anyway).

If the above doesn't work, you'd either have to use ant's "exec" task, or supply a patch yourself.

Good luck,
Dies

Pedro Alves wrote:
Hum... How do I pass that option into the ant task? Found nothing in the
documentation.

However, I search in the sources for examples and I used this:

        <wsdl2java url="${filename}"
            output="${build.stubs}"
            deployscope="session"
            serverSide="no"
            noimports="no"
            skeletonDeploy="no"
            verbose="no"
            typeMappingVersion="1.1"
            testcase="no"
            noWrapped="true"
            wrapArrays="no"
            >

However, I cant find any differences... it generates the same thing. (at
least, if I got it right, it should generate the stubs without the need
for me to make the changes in wsdl).

I'm using axis 1.3


Thanks

On Fri, Mar 10, 2006 at 11:11:59AM +0900, Dies Koper wrote:
Hello Pedro,

I didn't think it would affect your SOAP message but if you just want the ArrayHB24ILISTA1Stub class with a definition as the following to be generated, use the -wrapArrays option (by default Axis "unwraps" the complexType).

<complexType name="ArrayHB24ILISTA1Stub">
  <sequence>
<element name="item" nillable="true" maxOccurs="unbounded" type="transactionHB24:ArrayHB24ILISTA1" />
  </sequence>
</complexType>

Regards,
Dies


Pedro Alves wrote:
I found a way to force the "<item>" to be sent, but I dont think it will
work, since the namespace is different. Adding an element "test", it
forces axis to build the Stub object:

<complexType name="ArrayHB24ILISTA1Stub">
 <sequence>
<element name="item" nillable="true" maxOccurs="unbounded" type="transactionHB24:ArrayHB24ILISTA1" />
   <element name="TEST" minOccurs="0" type="string"/>
 </sequence>
</complexType>
<complexType name="RequestBeanHB24">
 <sequence>
   <element name="cancelTrxId" nillable="true" type="string" />
<element name="LISTA1" nillable="true" type="transactionHB24:ArrayHB24ILISTA1Stub" />
 </sequence>
</complexType>

, and the output is:

<LISTA1 xsi:type="ns2:ArrayHB24ILISTA1Stub">
 <item xsi:type="ns2:ArrayHB24ILISTA1">
   <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
   <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
 </item>
 <item xsi:type="ns2:ArrayHB24ILISTA1">
   <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
   <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
 </item>
 <TEST xsi:type="xsd:string" xsi:nil="true"/>
</LISTA1>

However, I'm almost sure that the server will complain about that unknown
ArrayHB24ILISTA1Stub (since I changed the wsdl but only at client side).
Will test it and say if it works

[]

Pedro


On Thu, Mar 09, 2006 at 06:52:26PM +0000, Pedro Alves wrote:
Hum... I dunno about that. But that is the output I'm getting. Apparently
axis is beeing smart and realizing that I dont need 2 objects for that --
and he is right, he doesnt even creates a ArrayHB24ILISTA1Stub.java -- but
I really need him to be dumb :)

On Thu, Mar 09, 2006 at 12:54:23PM -0600, Kiran Kumar wrote:
Hi,

In the generated output, <LISTA1> element is pointing to "ArrayHB24ILISTA1", it is supposed to point "ArrayHB24ILISTA1Stub". <LISTA1 xsi:type="ns2:ArrayHB24ILISTA1"> =====> supposed to be "ArrayHB24ILISTA1Stub".. <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
         <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
       </LISTA1>

Kiran

On Wed, Mar 08, 2006 at 09:39:07AM -0600, Kiran Kumar wrote:
Hi,

As per the definition of type'ArrayHB24ILISTA1' is not 'Array'.. You have to define array of your complex type (ArrayHB24ILISTA1).. It would be something like this :

        <xsd:complexType name="LISTA1Type">
                <xsd:sequence>
<xsd:element name="item" type="transactionHB24:ArrayHB24ILISTA1" maxOccurs="unbounded"/>
                </xsd:sequence>
        </xsd:complexType>

      <xsd:element name="LISTA1" type="LISTA1Type" />


Name of the your complex type (ArrayHB24ILISTA1) is confusing..Its not an array.. its just a complex type.

Reopening this subject:

I followed your suggestion. My wsdl now reads:

     <complexType name="ArrayHB24ILISTA1Stub">
       <sequence>
<element name="item" nillable="true" maxOccurs="unbounded" type="transactionHB24:ArrayHB24ILISTA1" />
       </sequence>
     </complexType>
     <complexType name="RequestBeanHB24">
       <sequence>
         <element name="cancelTrxId" nillable="true" type="string" />
<element name="LISTA1" nillable="true" type="transactionHB24:ArrayHB24ILISTA1Stub" />
       </sequence>
     </complexType>

But the output is still:

<arg0 xmlns:ns2="java:com.altitude.tp.transactions.transactionHB24" xsi:type="ns2:RequestBeanHB24">
       <cancelTrxId xsi:type="xsd:string" xsi:nil="true"/>
       <LISTA1 xsi:type="ns2:ArrayHB24ILISTA1">
         <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
         <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
       </LISTA1>
       <LISTA1 xsi:type="ns2:ArrayHB24ILISTA1">
         <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
         <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
       </LISTA1>
       <codAmbiente xsi:type="xsd:string" xsi:nil="true"/>
       <autorizacoes xsi:type="xsd:string" xsi:nil="true"/>
     </arg0>


The other side (a desperately outdated weblogic...) requires a form like:

<arg0 xmlns:ns2="java:com.altitude.tp.transactions.transactionHB24" xsi:type="ns2:RequestBeanHB24">
       <cancelTrxId xsi:type="xsd:string" xsi:nil="true"/>
       <LISTA1 xsi:type="ns2:ArrayHB24ILISTA1[2]">
           <item xsi:type="ns2:ArrayHB24ILISTA1">
             <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
             <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
           </item>
           <item xsi:type="ns2:ArrayHB24ILISTA1">
             <ACCAO xsi:type="xsd:string" xsi:nil="true"/>
             <CTCANAL_L xsi:type="xsd:string" xsi:nil="true"/>
           </item>
       </LISTA1>
       <codAmbiente xsi:type="xsd:string" xsi:nil="true"/>
       <autorizacoes xsi:type="xsd:string" xsi:nil="true"/>
     </arg0>


How can I force axis to send the request in this form? (even if I have to
change the wsdl).

Thanks

Reply via email to