OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: ASSEMBLY-198: Use of java.lang.StringBuffer in test ASM_8002 - PROPOSAL



Folks,

In the issue, http://www.osoa.org/jira/browse/ASSEMBLY-198 , the complaint is made that the current
form of the testcase uses an interface that contains a StringBuffer (in the Java form of the interface) which is
mapped  to a stringBuffer type in the XSD assocaited with the WSDL form of the same interface (Service4 interface).

The problem with this approach is that there is no formal "standard mapping" for String Buffer between Java and
WSDL.

The test is attempting to test that when an invocation is done over a Remotable interface, that the input parameters of
any operation are passed by value and as a result any modification made by the service implementation to the input
parameter of the service operation cannot be seen by the client.

The testcase structure involves an invocation between 2 SCA components, where the service component deliberately
alters the value of the parameter it receives in the service invocation. The client tests the value of the variable used for
the parameter for the service operation invocation - and validates that the value is the same as it was before the invocation
was made.

The design clearly calls for the use of a data type that is mutable - so in Java a "String" type is useless since it is immutable.
StringBuffer was originally chosen since it is the nearest type to a String that is mutable.


PROPOSAL.

To overcome the objection to the StringBuffer type, change the type of the parameter used in the service operation for this
testcase to be a list based on string:

Java:

java.util.List<String>

XSD:

<xs:element name="operation1">
     <xs:complexType>
        <xs:sequence>
                        <xs:element name="arg0" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
    </xs:complexType>
</xs:element>


While Java Strings are not mutable, Java Lists are mutable and so the service implementation can simply
update the first element in the List and the client can check whether that element of the List has changed
following the operation invocation.

The same behaviour is possible for all other implementation languages, I believe.

This affects:

Service4.java
Service4.wsdl

service1Impl7.java (client implementation)
service4Impl.java (service implementation)


The updated versions of these artifacts can be seen here:

http://tools.oasis-open.org/version-control/browse/wsvn/sca-assembly/TestCases/General_Java/src/main/java/org/oasisopen/sca/test/Service4.java
http://tools.oasis-open.org/version-control/browse/wsvn/sca-assembly/TestCases/General/src/main/resources/Service4.wsdl

http://tools.oasis-open.org/version-control/browse/wsvn/sca-assembly/TestCases/General_Java/src/main/java/org/oasisopen/sca/test/service1Impl7.java
http://tools.oasis-open.org/version-control/browse/wsvn/sca-assembly/TestCases/General_Java/src/main/java/org/oasisopen/sca/test/service4Impl.java

http://tools.oasis-open.org/version-control/browse/wsvn/sca-assembly/TestCases/Test_Client/src/main/java/client/ASM_8002_TestCase.java


Yours,  Mike.

Strategist - Emerging Technologies, SCA & SDO.
Co Chair OASIS SCA Assembly TC.
IBM Hursley Park, Mail Point 146, Winchester, SO21 2JN, Great Britain.
Phone & FAX: +44-1962-818014    Mobile: +44-7802-467431  
Email:  mike_edwards@uk.ibm.com





Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU








[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]