Hi,
I have now successfully brought up all the test cases under
itest/nodes/binding-sca-tribes:
BindingSCATestCase:
* Same classloader for two nodes
* Three cases:
* One NodeFactory, One Node to contain two deployable composites
(Client/Service)
* One NodeFactory, Two Node (each contain a deployable composite)
* Two NodeFactory, Two Node (each contain a deployable composite)
ClientNodeSharedCustomerTestCase (test Pass-By-Reference and
Allows-Pass-By-Reference):
* Different ClassLoaders for the Local and Remote implementation
classes, Local interface and Customer class are shared
* One NodeFactory, Two Node (each contain a deployable composite)
ClientNodeSharedLocalTestCase: (test Pass-By-Reference and Pass-By-Value):
* Different ClassLoaders for the Local and Remote implementation classes
and Customer class, only Local interface is shared (Customer will be copied
across the classloaders)
* One NodeFactory, Two Node (each contain a deployable composite)
ClientSharedCustomerTestCase: Similar with ClientNodeSharedCustomerTestCase
but using SCAClientFactory API instead of a client node
ClientSharedLocalTestCase: Similar with ClientNodeSharedLocalTestCase but
using SCAClientFactory API instead of a client node
To support these cases, I made the following changes:
* Improve InterfaceContractMapper to support different compatibility styles
to check by-reference or by-value
* Adjust SCABindingInvoker to allow In-VM invocations for PBR, and PBV by
coping data
* Add a getHeadInvoker(String phase) method to Invocation chain so that we
can connect the endpoint reference invocation chain the endpoint invocation
but bypass the interceptors for the service binding related processing. For
example, a remote binding.sca endpoint invocation chain will have a
DataTransformationInterceptor to convert OM data but it's not needed for the
in-VM invocation.
* Rationalize the "remote" flag to endpoint and only set it upon
deserialization (I.e, the endpoint is from a foreign endpoint registry).
Remove the remote flag on endpoint reference.
Thanks,
Raymond
--------------------------------------------------
From: "Raymond Feng" <[email protected]>
Sent: Tuesday, February 23, 2010 4:47 PM
To: <[email protected]>; <[email protected]>
Subject: Re: [2.x] In-VM invocation between components
Hi,
I just checked in an itest [1] to cover the various combinations.
The test cases fail at this moment as we try to connect the endpoint
reference invocation chain to the target endpoint invocation chain. But
the target invocation chain for the remote service expects OM data for the
databinding interceptor.
I'll look into the issues and try to bring up this itest.
[1]
https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes
Thanks,
Raymond
--------------------------------------------------
From: "Simon Laws" <[email protected]>
Sent: Tuesday, February 23, 2010 7:09 AM
To: <[email protected]>; <[email protected]>
Subject: Re: [2.x] In-VM invocation between components
Don't know if this is going to come out on email so have added it to [1]
also.
remote = endpoint is in a different JVM from the endpoint reference
local = endpoint is in the same JVM as the endpoint reference
cl = classloader
pbv = pass by value
pbr = pass by reference
apbr = allows pass by reference
remote local (same cl) local
(different cl)
local interface 1. error 4. pbr 7. pbv (or
error?)
remote interface 2. pbv 5. pbv 8. pbv
remote apbr 3. pbv 6. pbr (or pbr) 9. pbv
So for each numbered entry what test(s) identify the entry.
Simon
[1] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/SCA+Binding