Author: edwardsmj
Date: Mon Jan 24 20:02:06 2011
New Revision: 1062950

URL: http://svn.apache.org/viewvc?rev=1062950&view=rev
Log:
Fixing serialization of AsyncResponseInvoker in support of async services under 
TUSCANY-3783

Modified:
    
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AsyncResponseInvoker.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AsyncResponseInvoker.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AsyncResponseInvoker.java?rev=1062950&r1=1062949&r2=1062950&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AsyncResponseInvoker.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AsyncResponseInvoker.java
 Mon Jan 24 20:02:06 2011
@@ -70,7 +70,7 @@ public class AsyncResponseInvoker<T> imp
     private T responseTargetAddress;
     private String relatesToMsgID;
     private String operationName;
-    private MessageFactory messageFactory;
+    private transient MessageFactory messageFactory;
     private String bindingType = "";
     private boolean isNativeAsync;
     
@@ -79,6 +79,7 @@ public class AsyncResponseInvoker<T> imp
     private String domainURI;
 
        private transient EndpointRegistry endpointRegistry;
+       private transient ExtensionPointRegistry registry;
     
     public AsyncResponseInvoker(RuntimeEndpoint requestEndpoint,
                        RuntimeEndpointReference responseEndpointReference,
@@ -104,6 +105,7 @@ public class AsyncResponseInvoker<T> imp
                
                if( context != null ) {
                        domainURI = context.getDomainURI();
+                       registry = context.getExtensionPointRegistry();
                } // end if
                
         if ((requestEndpoint.getBindingProvider() instanceof 
EndpointAsyncProvider) &&
@@ -237,6 +239,8 @@ public class AsyncResponseInvoker<T> imp
            requestEndpoint = retrieveEndpoint(endpointURI);
            responseEndpointReference = 
retrieveEndpointReference(endpointReferenceURI);
            
+           messageFactory = getMessageFactory();
+           
            if (responseTargetAddress instanceof EndpointReference){
                // fix the target as in this case it will be an EPR
                EndpointReference epr = 
(EndpointReference)responseTargetAddress;
@@ -245,6 +249,14 @@ public class AsyncResponseInvoker<T> imp
     } // end method readObject 
 
     /**
+     * Gets a message factory
+     * @return
+     */
+    private MessageFactory getMessageFactory() {
+       return 
registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(MessageFactory.class);
+       } // end method getMessageFactory
+
+       /**
      * Fetches the EndpointReference identified by an endpoint reference URI
      * @param uri - the URI of the endpoint reference
      * @return - the EndpointReference matching the supplied URI - null if no 
EPR is found which
@@ -290,7 +302,10 @@ public class AsyncResponseInvoker<T> imp
                if( context != null ) {
                        registry = context.getExtensionPointRegistry();
                        endpointRegistry = getEndpointRegistry( registry );
-                       if( endpointRegistry != null ) return endpointRegistry;
+                       if( endpointRegistry != null ) {
+                               this.registry = registry;
+                               return endpointRegistry;
+                       } // end if
                } // end if
                
                // Deal with the case where there is no context available
@@ -303,6 +318,7 @@ public class AsyncResponseInvoker<T> imp
                 if( endpointRegistry != null ) {
                     for( Endpoint endpoint : 
endpointRegistry.findEndpoint(uri) ) {
                        // TODO: For the present, simply return the first 
registry with a matching endpoint
+                       this.registry = registry;
                        return endpointRegistry;
                     } // end for
                 } // end if 


Reply via email to