Author: rfeng
Date: Fri Aug 24 01:15:59 2007
New Revision: 569290

URL: http://svn.apache.org/viewvc?rev=569290&view=rev
Log:
Make sure the code doesn't expose the ServiceReference when the 
CallableReference is defined on the API

Modified:
    
incubator/tuscany/java/sca/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
    
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeComponentContext.java
    
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
    
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java
    
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
    
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/CallbackWireObjectFactory.java

Modified: 
incubator/tuscany/java/sca/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
 Fri Aug 24 01:15:59 2007
@@ -191,7 +191,7 @@
         aCallBackService.getService().setCallbackIllegally("Try to set 
callback on your own service reference");
 
         // FIXME: [rfeng] Not sure why this is illegal, comment out the 
following test
-        // Assert.assertEquals("CallBackSetCallback - Test10", true, 
aFile.exists());
+        Assert.assertEquals("CallBackSetCallback - Test10", true, 
aFile.exists());
 
         return;
     }

Modified: 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeComponentContext.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeComponentContext.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeComponentContext.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeComponentContext.java
 Fri Aug 24 01:15:59 2007
@@ -23,6 +23,7 @@
 import java.io.Reader;
 import java.io.Writer;
 
+import org.osoa.sca.CallableReference;
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.ServiceReference;
 
@@ -73,4 +74,16 @@
                                                 RuntimeComponentReference 
reference,
                                                 RuntimeComponent component,
                                                 RuntimeComponentService 
service);
+    
+    /**
+     * Create a callable reference for the given component service
+     * @param <B>
+     * @param businessInterface
+     * @param component
+     * @param service
+     * @return
+     */
+    <B> CallableReference<B> getCallableReference(Class<B> businessInterface,
+                                                         RuntimeComponent 
component,
+                                                         
RuntimeComponentService service);
 }

Modified: 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
 Fri Aug 24 01:15:59 2007
@@ -317,5 +317,9 @@
     private String createCallbackID() {
         return UUID.randomUUID().toString();
     }
+    
+    public void attachCallbackID(Object callbackID) {
+        this.callbackID = callbackID;
+    }
 
 }

Modified: 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java
 Fri Aug 24 01:15:59 2007
@@ -229,6 +229,24 @@
         }
     }
 
+    public <B> CallableReference<B> getCallableReference(Class<B> 
businessInterface,
+                                                         RuntimeComponent 
component,
+                                                         
RuntimeComponentService service) {
+        try {
+            if (businessInterface == null) {
+                InterfaceContract contract = service.getInterfaceContract();
+                businessInterface = 
(Class<B>)((JavaInterface)contract.getInterface()).getJavaClass();
+            }
+            RuntimeComponentReference ref =
+                (RuntimeComponentReference)createSelfReference(component, 
service, businessInterface);
+            ref.setComponent(component);
+            return new CallableReferenceImpl<B>(businessInterface, component, 
ref, null, proxyFactory,
+                                                compositeActivator);
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }
+    }
+
     /**
      * Create a self-reference for a component service
      * @param component

Modified: 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
 Fri Aug 24 01:15:59 2007
@@ -33,7 +33,6 @@
 import org.apache.tuscany.sca.runtime.RuntimeWire;
 import org.osoa.sca.CallableReference;
 import org.osoa.sca.RequestContext;
-import org.osoa.sca.ServiceReference;
 
 /**
  * @version $Rev$ $Date$
@@ -60,14 +59,10 @@
         EndpointReference to = 
ThreadMessageContext.getMessageContext().getTo();
         RuntimeComponentService service = (RuntimeComponentService) 
to.getContract();
         RuntimeComponent component = (RuntimeComponent) to.getComponent();
-        // FIXME: [rfeng] What if the interface is not a java interface? 
-        JavaInterface javaInterface = (JavaInterface) 
service.getInterfaceContract().getInterface();
-        Class<B> javaClass = (Class<B>)javaInterface.getJavaClass();
-        ServiceReference<B> ref = (ServiceReference<B>) 
component.getComponentContext()
-                                       .createSelfReference(javaClass, 
service.getName());
-
-        
ref.setCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
-        return ref;
+        
+        CallableReference<B> callableReference = 
component.getComponentContext().getCallableReference(null, component, service);
+        ((CallableReferenceImpl<B>) 
callableReference).attachCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
+        return callableReference;
     }
 
     @SuppressWarnings("unchecked")
@@ -88,7 +83,7 @@
         List<RuntimeWire> wires = callbackReference.getRuntimeWires();
         CallbackWireObjectFactory factory = new 
CallbackWireObjectFactory(javaClass, proxyFactory, wires);
         factory.resolveTarget();
-        
factory.setCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
+        
factory.attachCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
         return factory;
     }
 }

Modified: 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/CallbackWireObjectFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/CallbackWireObjectFactory.java?rev=569290&r1=569289&r2=569290&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/CallbackWireObjectFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/CallbackWireObjectFactory.java
 Fri Aug 24 01:15:59 2007
@@ -22,6 +22,7 @@
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.WireableBinding;
+import org.apache.tuscany.sca.core.context.CallableReferenceImpl;
 import org.apache.tuscany.sca.core.factory.ObjectCreationException;
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.runtime.EndpointReference;
@@ -35,7 +36,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class CallbackWireObjectFactory<B> extends WireObjectFactory<B> {
+public class CallbackWireObjectFactory<B> extends CallableReferenceImpl<B> {
     private RuntimeWire wire;
     private List<RuntimeWire> wires;
     private EndpointReference resolvedEndpoint;
@@ -155,5 +156,5 @@
         }
         return ref;
     }
-
+    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to