[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: JAVA-6: Proposed direction
1. Extend the definition of @AllowsPassByReference to make
it apply to a client-side implementation class or an individual
client reference. (This includes callback references.)
Putting it on an implementation class means that all references
within this class have AllowsPassByReference semantics. For a
reference, AllowsPassByReference semantics are as follows:
a. The client code using the reference will not modify passed
parameters in a separate thread.
b. The client code using the reference will not modify passed
parameters in a callback.
c. The client code using the reference will not modify
parameters passed on one-way operations.
d. The client code using the reference will not modify returned
result objects.
2. Proxies injected into references that have AllowsPassbyReference
semantics (as defined in point 1 above) have AllowsPassByReference
semantics. Proxies injected into references that do not have
AllowsPassbyReference semantics (as defined in point 1 above)
do not have AllowsPassByReference semantics.
3. The SCA runtime MAY optimize a service call by passing parameters
by reference if and only if both the proxy making the call and
the implementation method being called have AllowsPassByReference
semantics.
4. Add a new method
boolean getAllowsPassByReference();
to the ServiceReference interface. The allowsPassByReference
value of a service reference can be queried using this method.
5. Service references injected into references that have
AllowsPassbyReference semantics (as defined in point 1 above)
have an allowsPassByReference value of true.
6. Proxies obtained by calling ServiceReference.getService()
have AllowsPassByReference semantics if and only if the
service reference has an allowsPassByReference value of true.
7. Proxies obtained by calling ComponentContext.getService() or
ComponentContext.getServices() have AllowsPassByReference
semantics if and only if the named reference has
AllowsPassByReference semantics.
8. Proxies obtained by calling RequestContext.getCallback() have
AllowsPassByReference semantics if and only if the service
implementation method has AllowsPassByReference semantics.
9. Proxies created by any means other than those stated in points
2, 6, 7 and 8 above do not have AllowsPassByReference semantics.
10. Service references obtained by casting proxies have an
allowsPassByReference value of true if and only if the proxy
has AllowsPassbyReference semantics.
11. Service references obtained by calling
ComponentContext.getServiceReference() or
ComponentContext.getServiceReferences() have AllowsPassByReference
semantics if and only if the named reference has
AllowsPassByReference semantics.
12. Service references obtained by calling
RequestContext.getCallbackReference() have AllowsPassByReference
semantics if and only if the service implementation method has
AllowsPassByReference semantics.
13. Service references created by any means other than those
stated in points 5, 10, 11 and 12 above (including Java
deserialization or being passed across a remotable interface)
have an allowsPassByReference value of false.
Simon
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]