Amila,

SOAP encoding is much more likely to be used in a code-first scenario,
but you must make sure that it also works in a WSDL-first scenario.

Regarding one of your questions, you would never see an element
defined as follows:

<s:element name="TestSoapElement2">
>         <s:complexType>
>             <s:sequence>
>                 <s:element name="param1" type="s:string"/>
>                 <s:element name="param2" type="soapenc:Array"/>
>             </s:sequence>
>         </s:complexType>
>     </s:element>

First off, you would define a named complexType rather than an
element. And second, you never define an element simply as
soapenc:Array. The ComplexType would look something like this:

  <s:complexType name="TestSoapType2">
     <s:sequence>
          <s:element name="param1" type="soapenc:string"/>
          <s:element name="param2" type="tns:ArrayofString"/>
     </s:sequence>
  </s:complexType>

<complexType name="ArrayOfString">
   <complexContent>
      <restriction base="soapenc:Array">
         <attribute ref="soapenc:arrayType"
            wsdl:arrayType="string[]"/>
      </restriction>
   </complexContent>
</complexType>

Or even more likely, you wouldn't define the "TestSoapType2" type --
you would simply reference the child types in the WSDL message
description:

<w:message name="TestInput">
   <w:part name="param1" type="soapenc:string"/>
   <w:part name="param2" type="tns:ArrayofString"/>
</w:message>

You might find this article helpful:
http://www.developer.com/services/article.php/10928_1602051_3

You also might spend a little time playing with Axis generating some
RPC/encoded services to get a better sense of how the environment
works.

Anne

On Jan 3, 2008 1:51 AM, Amila Suriarachchi <[EMAIL PROTECTED]> wrote:
> hi tom,
>
> I went through the Axis user guide[1] and as I understood Axis 1.x has used
> soap encoding in the
> code first approach to support Arrays. I think this is where both you and
> glen has misunderstood.
>
> in that case if I have a class like this
>
> public class Test {
>  private int[] testArray;
> public void setTestArray(int[] param){
>      testArray = param;
> }
>
> public int[] getTestArray(){
>     return testArray;
> }
>
> }
>
> in this case as Axis 1.x has done users must be given the chance to deal
> with the standard types and it is
> almost useless to ask to deal with a new type. Further as I guess it uses
> org.apache.axis.providers.java.RPCProvider as in Axis2 RPCMessageReceiver.
> BTW one question. Why Axis 1.x use soap encoding for this? why it simply
> generate something
> like this
> <element name="testArray" minOccurs="0" maxOccurs="unbounded"/>
> it is always better to use POX rather than encoding types isn't it?
>
> So we won't be able to use the Axis 1.x code for this.
>
> But In the contract first approach people always have to deal with the
> generated classes. So I believe in this
> case I don't think it is a problem. Here the main idea is to access a
> service already deployed with soap:encoding.
>
> So it would only be used at client side.
>
> [1]
> http://ws.apache.org/axis/java/user-guide.html#ConsumingWebServicesWithAxis
>
> thanks,
> Amila.
>
>
>
> On Jan 3, 2008 10:53 AM, Amila Suriarachchi <[EMAIL PROTECTED]>
> wrote:
> > hi tom,
> > thanks you your reply. if you have already working with axis 1.x could you
> please help on answering these
> > questions?
> >
> >
> >
> > On Jan 3, 2008 4:06 AM, Tom Jordahl < [EMAIL PROTECTED]> wrote:
> >
> > > +1 on Glen's -1 of using a whole new set of types to support SOAP
> > > encoding.  A String must map to a soapenc:string and a Array[] must map
> > > to a SOAP encoded array.
> >
> >
> > In axis 1.x is it use in code first or contract first (i.e. wsdl2java)
> approach? Here what I am trying to do is to
> > use it with the wsdl2java tool. i.e with the contract first approach.
> >
> > So the main question is what is the generated method signature for
> >
> > <s:element name="TestSoapElement2">
> > >         <s:complexType>
> > >             <s:sequence>
> > >                 <s:element name="param1" type="s:string"/>
> > >                 <s:element name="param2" type="soapenc:Array"/>
> > >             </s:sequence>
> > >         </s:complexType>
> > >     </s:element>
> >
> > this type of element. what is the type of param2 in Axis 1.x? Here in code
> generation
> > time I do not know the type of the array. That is why I set it as a new
> type letting users to define it.
> >
> >
> >
> > >
> > >
> > > I would also argue for "full" multiref support, as servers will be
> > > sending this back to Axis2 clients, right?
> >
> >
> > I agree. I'll add this feature as I have describe earlier.
> >
> >
> > >
> > >
> > > Amila, please feel free to use the Axis 1.x code base as a reference for
> > > how to do any of this.  Please also feel free to NOT to duplicate the
> > > Array serialization/deserialization bugs. :-)
> >
> >
> > For the moment in Axis 2 ADB is also in a very stable state.  so using
> already existing ADB logic
> > won't give any serializing de serializing issues.
> >
> > Thanks,
> > Amila.
> >
> >
> >
> >
> > >
> > >
> > > --
> > > Tom Jordahl
> > > Axis 1.x guy
> > >
> > >
> > >
> > >
> > >
> > > -----Original Message-----
> > > From: Glen Daniels [mailto:[EMAIL PROTECTED] ]
> > > Sent: Friday, December 28, 2007 1:49 AM
> > > To: axis-dev@ws.apache.org
> > > Subject: Re: [Axis2] Soap Encoding support with ADB
> > >
> > > Hey Amila:
> > >
> > > >     won't need them.  But for SOAP 1.1, the situation is different.
> > > The
> > > >     encoding spec says you MUST encode all complex object types as
> > > top-level
> > > >     members of the serialization.  Therefore ALL conforming SOAP 1.1
> > > >     encoding implementations will be putting out stuff that looks like
> > > this:
> > > >
> > > >     <soap:body>
> > > >       <operation>
> > > >         <arg1 href="#obj1"/>
> > > >       </operation>
> > > >       <multiref id="obj1">
> > > >         <name>the real argument</name>
> > > >         <color>blue</color>
> > > >       </multiref>
> > > >     </soap:body>
> > > >
> > > > is this means it is allowed to have more than one xml element in the
> > > > soap:body ?
> > >
> > > Yes.  But - I was incorrect about the MUST above!  My hands were typing
> > > a little ahead of my brain there. :)  Multirefs are not in fact
> > > *required* by SOAP 1.1 section 5, but some implementations (Axis 1.X
> > > included) will by default serialize all complex objects as multirefs
> > > since it speeds writing (if you don't do it that way you have to walk
> > > the entire data graph to see what objects are referred to multiple times
> > >
> > > before serializing).
> > >
> > > > I have to think about bit. We can resolve the problem with parsing as
> > > I
> > > > have mentioned earlier but can not think about a way to serialize with
> > >
> > > > multirefs.
> > >
> > > Again, my bad - we're not forced to do so, so it's ok for us not to, as
> > > long as we accept that we're not going to be able to do real graphs.  If
> > >
> > > no one wants this particular functionality, I'm fine with punting on it.
> > >
> > > Your idea about parsing the XML to remove the hrefs and generate a
> > > larger "virtual" expanded document on the reading side should work fine,
> > >
> > > although it will potentially cause repeated data if a multiref is used
> > > many times.  Probably not a big deal.  I'll respond to the rest of your
> > > other note in another message.
> > >
> > > Thanks,
> > > --Glen
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> >
> > --
> > Amila Suriarachchi,
> > WSO2 Inc.
>
>
>
> --
> Amila Suriarachchi,
> WSO2 Inc.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to