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