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

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j message

[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]