You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2008/03/16 18:59:46 UTC

svn commit: r637621 - in /incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core: assembly/ invocation/

Author: nash
Date: Sun Mar 16 10:59:45 2008
New Revision: 637621

URL: http://svn.apache.org/viewvc?rev=637621&view=rev
Log:
Fix for TUSCANY-2077

Modified:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointReferenceImpl.java Sun Mar 16 10:59:45 2008
@@ -149,9 +149,11 @@
     @Override
     public Object clone() throws CloneNotSupportedException {
         EndpointReferenceImpl copy = (EndpointReferenceImpl)super.clone();
+        /* [nash] no need to copy callback endpoint
         if (callbackEndpoint != null) {
             copy.callbackEndpoint = (EndpointReference)callbackEndpoint.clone();
         }
+        */
         if (parameters != null) {
             copy.parameters = (ReferenceParameters)parameters.clone();
         }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKCallbackInvocationHandler.java Sun Mar 16 10:59:45 2008
@@ -98,7 +98,7 @@
         }
 
         try {
-            return invoke(chain, args, wire);
+            return invoke(chain, args, wire, wire.getSource());
         } catch (InvocationTargetException e) {
             Throwable t = e.getCause();
             if (t instanceof NoRegisteredCallbackException) {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java Sun Mar 16 10:59:45 2008
@@ -67,6 +67,7 @@
     protected boolean conversational;
     protected ExtendedConversation conversation;
     protected MessageFactory messageFactory;
+    protected EndpointReference source;
     protected EndpointReference target;
     protected RuntimeWire wire;
     protected CallableReference<?> callableReference;
@@ -98,14 +99,12 @@
 
     protected void init(RuntimeWire wire) {
         if (wire != null) {
-            /* [scn] no need to clone because the wire doesn't get modified
             try {
-                // Clone the wire so that reference parameters can be changed
-                this.wire = (RuntimeWire)wire.clone();
+                // Clone the endpoint reference so that reference parameters can be changed
+                source = (EndpointReference)wire.getSource().clone();
             } catch (CloneNotSupportedException e) {
                 throw new ServiceRuntimeException(e);
             }
-            [scn] */
             initConversational(wire);
         }
     }
@@ -152,7 +151,7 @@
         }
 
         // send the invocation down the wire
-        Object result = invoke(chain, args, wire);
+        Object result = invoke(chain, args, wire, source);
 
         return result;
     }
@@ -262,10 +261,10 @@
         this.target = endpoint;
     }
 
-    protected Object invoke(InvocationChain chain, Object[] args, RuntimeWire wire) throws Throwable {
-
+    protected Object invoke(InvocationChain chain, Object[] args, RuntimeWire wire, EndpointReference source)
+                         throws Throwable {
         Message msg = messageFactory.createMessage();
-        msg.setFrom(wire.getSource());
+        msg.setFrom(source);
         if (target != null) {
             msg.setTo(target);
         } else {
@@ -306,11 +305,11 @@
         throws TargetResolutionException {
         ReferenceParameters parameters = msg.getFrom().getReferenceParameters();
         parameters.setCallbackID(getCallbackID());
-        if (wire.getSource() == null || wire.getSource().getCallbackEndpoint() == null) {
+        if (msg.getFrom() == null || msg.getFrom().getCallbackEndpoint() == null) {
             return;
         }
 
-        parameters.setCallbackReference(wire.getSource().getCallbackEndpoint());
+        parameters.setCallbackReference(msg.getFrom().getCallbackEndpoint());
 
         // If we are passing out a callback target
         // register the calling component instance against this 

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java?rev=637621&r1=637620&r2=637621&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/RuntimeWireInvoker.java Sun Mar 16 10:59:45 2008
@@ -141,56 +141,6 @@
     }
 
     /**
-     * This method has bugs in it and is not needed by this class.  It is no
-     * longer called and will be removed completely when I finish my cleanup
-     * of this class.
-     */
-    @SuppressWarnings("unchecked")
-    private void handleCallback(Message msg, Object currentConversationID) throws TargetResolutionException {
-        EndpointReference from = msg.getFrom();
-        ReferenceParameters parameters = from.getReferenceParameters();
-        parameters.setCallbackID(callbackID);
-        if (from == null || from.getCallbackEndpoint() == null) {
-            return;
-        }
-        // If we are passing out a callback target
-        // register the calling component instance against this 
-        // new conversation id so that stateful callbacks will be
-        // able to find it
-        if (conversational && callbackObject == null) {
-            // the component instance is already registered
-            // so add another registration
-            ScopeContainer scopeContainer = getConversationalScopeContainer(msg);
-
-            if (scopeContainer != null) {
-                scopeContainer.addWrapperReference(currentConversationID, parameters.getConversationID());
-            }
-        }
-
-        Interface interfaze = msg.getOperation().getInterface();
-        if (callbackObject != null) {
-            if (callbackObject instanceof ServiceReference) {
-                EndpointReference callbackRef = ((CallableReferenceImpl)callbackObject).getEndpointReference();
-                parameters.setCallbackReference(callbackRef);
-            } else {
-                if (interfaze != null) {
-                    if (!interfaze.isConversational()) {
-                        throw new IllegalArgumentException(
-                                                           "Callback object for stateless callback is not a ServiceReference");
-                    } else {
-                        ScopeContainer scopeContainer = getConversationalScopeContainer(msg);
-                        if (scopeContainer != null) {
-                            InstanceWrapper wrapper = new CallbackObjectWrapper(callbackObject);
-                            scopeContainer.registerWrapper(wrapper, conversation.getConversationID());
-                        }
-                        parameters.setCallbackObjectID(callbackObject);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
      * Pre-invoke for the conversation handling
      * @param msg
      * @throws TargetResolutionException



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org