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
- From: Mike Edwards <mike_edwards@uk.ibm.com>
- To: "OASIS Assembly" <sca-assembly@lists.oasis-open.org>
- Date: Wed, 10 Mar 2010 12:18:25 +0000
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]