Hi Amila:

Amila Suriarachchi wrote:
To support the soap encoding, there are a set of special classes in the org.apache.axis2.databinding.types.soapencoding pacakge.

Er... sorry, but -1 on this approach. :(

The point of SOAP encoding is to be able to encode *standard language types*. If you have to use a whole separate type hierarchy, which appears to be what you've done here, in order to access SOAP encoded services, I would say it's not even worth doing.

SOAP encoding should be engaged as a result of either a) a configuration switch on the service side, if you start from code, or b) reading an RPC/ENC WSDL. However, once it is engaged, you as the user shouldn't see it in any intrusive way. Separate types are, to say the least, intrusive.

The org.apache.axis2.databinding.types.soapencoding.Array class is used to support the SOAP-ENC:Array type.

I would especially express concern about this. It's an enormous pain in the rear to require conversion of all of your arrays in order to use them with an encoded service. :(

Lets take this schema fragment
<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>

The generated TestSoapElement2 class has a reference to this soap array class. This Array class
then can be used to add elements and send the array

Ugh.

for an example objects can be added using the addObject method.
(please see the SoapEncodingTest class under adb-codegen module)
       Array array = new Array();
        _double testDouble;
        for (int i = 0; i < 2; i++) {
            testDouble = new _double();
            testDouble.set_double(23.45);
            array.addObject(testDouble);
        }

Whereas this should just be:

double [] array = new double[2];
for (int i = 0; i < 2; i++) {
  array[i] = 23.45;
}

to add soap encoding types, classes under org.apache.axis2.databinding.types.soapencoding can be used and to add the Standard Schema types, classes under org.apache.axis2.databinding.types.xsd can be used.

What?? I have to use an Axis2-specific type to encode a float or a STRING?? That's a non-starter.

Limitations.
href attribute is not supported.
i.e it can not parse xmls like
<greeting id="String-0">Hello</greeting>
<salutation href="#String-0"/>

In many ways, Amila, SOAP encoding's benefit is really all about the ability to maintain referential integrity across a data graph transmitted between different implementations. In SOAP 1.2, where you can inline the serialization of your objects and then refer back to them later, it can *almost* be acceptable not to do hrefs - in many cases you 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>

So without multiref support, only simple types will be supported for SOAP 1.1 encoding. That's not acceptable.

http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html#SOAP_encodingStyle_Attribute <http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html#SOAP_encodingStyle_Attribute>. Therefore this feature is for the users who have to deal with the old wsdls having soap encoding.

IMO we should either support SOAP encoding or not. If we do it, let's make it work for the actual SOAPENC services that people are going to be using out there.

Please help us using this feature and reporting any issues so that I can fix those issue for Axis2 1.4 release.

See above. :) Let's please remove this stuff and either do it right (my preference) or not do it at all.

I know you put in a lot of work on this Amila, and I apologize for the -1, but this really isn't the right way to go.

Thanks,
--Glen

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

Reply via email to