Author: rfeng
Date: Wed Nov 18 19:06:40 2009
New Revision: 881883

URL: http://svn.apache.org/viewvc?rev=881883&view=rev
Log:
Rename the methods on RuntimeEndpoint/RuntimeEndpointReference 
Defer the unmarshalling of XML into endpoint/endpointReference

Modified:
    
tuscany/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
    
tuscany/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
    
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
    
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
    
tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
    
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
    
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
    
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
    
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
    
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
    
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
    
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
    
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java

Modified: 
tuscany/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
 Wed Nov 18 19:06:40 2009
@@ -64,7 +64,7 @@
         this.mediator = mediator;
 
         // TUSCANY-3166
-        this.serviceContract = endpoint.getServiceInterfaceContract();
+        this.serviceContract = 
endpoint.getComponentTypeServiceInterfaceContract();
     }
 
     public InterfaceContract getBindingInterfaceContract() {

Modified: 
tuscany/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
 Wed Nov 18 19:06:40 2009
@@ -290,7 +290,7 @@
             method = method.substring(method.lastIndexOf(".") + 1);
         }
     
-        List<Operation> operations = 
endpoint.getServiceInterfaceContract().getInterface().getOperations();
+        List<Operation> operations = 
endpoint.getComponentTypeServiceInterfaceContract().getInterface().getOperations();
             
//componentService.getBindingProvider(binding).getBindingInterfaceContract().getInterface().getOperations();
 
         

Modified: 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
 Wed Nov 18 19:06:40 2009
@@ -164,9 +164,9 @@
             // Check if there is a target
             RuntimeEndpoint endpoint = 
(RuntimeEndpoint)endpointReference.getTargetEndpoint();
             if (endpoint != null) {
-                return endpoint.getServiceInterfaceContract();
+                return endpoint.getComponentTypeServiceInterfaceContract();
             } else {
-                return endpointReference.getReferenceInterfaceContract();
+                return 
endpointReference.getComponentTypeReferenceInterfaceContract();
             }
         }
     }

Modified: 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
 Wed Nov 18 19:06:40 2009
@@ -118,7 +118,7 @@
         if (distributedProvider != null) {
             return distributedProvider.getBindingInterfaceContract();
         } else {
-            return endpoint.getServiceInterfaceContract();
+            return endpoint.getComponentTypeServiceInterfaceContract();
         }
     }
 

Modified: 
tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
 (original)
+++ 
tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
 Wed Nov 18 19:06:40 2009
@@ -148,7 +148,7 @@
 
     public void process(RuntimeEndpoint endpoint) {
         InterfaceContract sourceContract = 
endpoint.getBindingInterfaceContract();
-        InterfaceContract targetContract = 
endpoint.getServiceInterfaceContract();
+        InterfaceContract targetContract = 
endpoint.getComponentTypeServiceInterfaceContract();
         if (targetContract == null) {
             targetContract = sourceContract;
         }
@@ -184,7 +184,7 @@
     }
 
     public void process(RuntimeEndpointReference endpointReference) {
-        InterfaceContract sourceContract = 
endpointReference.getReferenceInterfaceContract();
+        InterfaceContract sourceContract = 
endpointReference.getComponentTypeReferenceInterfaceContract();
         InterfaceContract targetContract = 
endpointReference.getBindingInterfaceContract();
         if (targetContract == null) {
             targetContract = sourceContract;

Modified: 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
 (original)
+++ 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
 Wed Nov 18 19:06:40 2009
@@ -34,6 +34,7 @@
  * @version $Rev$ $Date$
  */
 public class CompositeContext {
+    protected final static InheritableThreadLocal<CompositeContext> context = 
new InheritableThreadLocal<CompositeContext>();
     protected ExtensionPointRegistry extensionPointRegistry;
     protected EndpointRegistry endpointRegistry;
     protected ComponentContextFactory componentContextFactory;
@@ -73,8 +74,12 @@
     public static CompositeContext getCurrentCompositeContext() {
         RuntimeComponent component = getCurrentComponent();
         if (component != null) {
-            RuntimeComponentContext context = component.getComponentContext();
-            return context.getCompositeContext();
+            RuntimeComponentContext componentContext = 
component.getComponentContext();
+            return componentContext.getCompositeContext();
+        }
+        CompositeContext compositeContext = context.get();
+        if (compositeContext != null) {
+            return compositeContext;
         }
         return null;
     }
@@ -111,5 +116,12 @@
     public Composite getDomainComposite() {
         return domainComposite; 
     }
-
+    
+    public static void setThreadCompositeContext(CompositeContext value) {
+        context.set(value);
+    }
+    
+    public static void removeCompositeContext() {
+        context.remove();
+    }
 }

Modified: 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
 (original)
+++ 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
 Wed Nov 18 19:06:40 2009
@@ -19,8 +19,6 @@
 
 package org.apache.tuscany.sca.runtime;
 
-import java.io.IOException;
-
 import org.apache.tuscany.sca.assembly.Endpoint;
 import org.apache.tuscany.sca.assembly.EndpointReference;
 
@@ -28,8 +26,11 @@
  * A utility to seralize/deserialize Endpoint/EndpointReference objects
  */
 public interface EndpointSerializer {
-    EndpointReference readEndpointReference(String xml) throws IOException;
-    String write(EndpointReference endpointReference) throws IOException;
-    Endpoint readEndpoint(String xml) throws IOException;
-    String write(Endpoint endpoint) throws IOException;
+    EndpointReference readEndpointReference(String xml);
+
+    String write(EndpointReference endpointReference);
+
+    Endpoint readEndpoint(String xml);
+
+    String write(Endpoint endpoint);
 }

Modified: 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
 (original)
+++ 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
 Wed Nov 18 19:06:40 2009
@@ -54,5 +54,5 @@
      * code can process.
      * @return The target component type service interface contract
      */
-    InterfaceContract getServiceInterfaceContract();
+    InterfaceContract getComponentTypeServiceInterfaceContract();
 }

Modified: 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
 (original)
+++ 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
 Wed Nov 18 19:06:40 2009
@@ -53,7 +53,7 @@
      * implementation code uses to make the outbound call.
      * @return The source component type reference interface contract
      */
-    InterfaceContract getReferenceInterfaceContract();    
+    InterfaceContract getComponentTypeReferenceInterfaceContract();    
     boolean isOutOfDate();
     void rebuild();
 

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
 Wed Nov 18 19:06:40 2009
@@ -513,14 +513,14 @@
         epr.bind(compositeContext);
 
         ComponentReference reference = endpointReference.getReference(); 
-        InterfaceContract sourceContract = epr.getReferenceInterfaceContract();
+        InterfaceContract sourceContract = 
epr.getComponentTypeReferenceInterfaceContract();
 
         // TODO - EPR - interface contract seems to be null in the 
implementation.web
         //              case. Not introspecting the CT properly?
         if (sourceContract == null){
             // TODO - Can't do this with move of matching to wire
             // take the contract from the service to which the reference is 
connected
-            sourceContract = ((RuntimeEndpoint) 
endpointReference.getTargetEndpoint()).getServiceInterfaceContract();
+            sourceContract = ((RuntimeEndpoint) 
endpointReference.getTargetEndpoint()).getComponentTypeServiceInterfaceContract();
             reference.setInterfaceContract(sourceContract);
         }
 

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
 Wed Nov 18 19:06:40 2009
@@ -19,7 +19,6 @@
 
 package org.apache.tuscany.sca.core.assembly.impl;
 
-import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 
@@ -36,6 +35,7 @@
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.runtime.EndpointSerializer;
+import org.oasisopen.sca.ServiceRuntimeException;
 
 public class EndpointSerializerImpl implements EndpointSerializer {
     private ExtensionPointRegistry registry;
@@ -55,25 +55,18 @@
         refProcessor = processors.getProcessor(EndpointReference.class);
     }
 
-
-    public Endpoint readEndpoint(String xml) throws IOException {
+    public Endpoint readEndpoint(String xml) {
         try {
             XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(xml));
             Endpoint result = processor.read(reader, new 
ProcessorContext(registry));
             reader.close();
             return result;
         } catch (Exception e) {
-            throw wrap(e);
+            throw new ServiceRuntimeException(e);
         }
     }
 
-    private IOException wrap(Exception e) {
-        IOException ex = new IOException(e.getMessage());
-        ex.initCause(e);
-        return ex;
-    }
-
-    public String write(Endpoint endpoint) throws IOException {
+    public String write(Endpoint endpoint) {
         StringWriter sw = new StringWriter();
         try {
             XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);
@@ -82,22 +75,22 @@
             writer.close();
             return sw.toString();
         } catch (Exception e) {
-            throw wrap(e);
+            throw new ServiceRuntimeException(e);
         }
     }
 
-    public EndpointReference readEndpointReference(String xml) throws 
IOException {
+    public EndpointReference readEndpointReference(String xml) {
         try {
             XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(xml));
             EndpointReference result = refProcessor.read(reader, new 
ProcessorContext(registry));
             reader.close();
             return result;
         } catch (Exception e) {
-            throw wrap(e);
+            throw new ServiceRuntimeException(e);
         }
     }
 
-    public String write(EndpointReference endpointReference) throws 
IOException {
+    public String write(EndpointReference endpointReference) {
         StringWriter sw = new StringWriter();
         try {
             XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);
@@ -106,7 +99,7 @@
             writer.close();
             return sw.toString();
         } catch (Exception e) {
-            throw wrap(e);
+            throw new ServiceRuntimeException(e);
         }
     }
 }

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
 Wed Nov 18 19:06:40 2009
@@ -19,9 +19,10 @@
 
 package org.apache.tuscany.sca.core.assembly.impl;
 
+import java.io.Externalizable;
 import java.io.IOException;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
@@ -34,7 +35,6 @@
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Contract;
-import org.apache.tuscany.sca.assembly.Endpoint;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.impl.EndpointImpl;
 import org.apache.tuscany.sca.context.CompositeContext;
@@ -76,25 +76,25 @@
 /**
  * Runtime model for Endpoint that supports java serialization
  */
-public class RuntimeEndpointImpl extends EndpointImpl implements 
RuntimeEndpoint {
+public class RuntimeEndpointImpl extends EndpointImpl implements 
RuntimeEndpoint, Externalizable {
     private transient CompositeContext compositeContext;
     private transient EndpointRegistry endpointRegistry;
     private transient RuntimeWireProcessor wireProcessor;
+    private transient ProviderFactoryExtensionPoint providerFactories;
     private transient InterfaceContractMapper interfaceContractMapper;
     private transient WorkScheduler workScheduler;
     private transient PhaseManager phaseManager;
     private transient MessageFactory messageFactory;
     private transient RuntimeInvoker invoker;
-    private transient ProviderFactoryExtensionPoint providerFactories;
+    private transient EndpointSerializer serializer;
 
     private transient List<InvocationChain> chains;
-    private transient final Map<Operation, InvocationChain> invocationChainMap 
=
+    private transient Map<Operation, InvocationChain> invocationChainMap =
         new ConcurrentHashMap<Operation, InvocationChain>();
     private transient InvocationChain bindingInvocationChain;
 
     private transient ServiceBindingProvider bindingProvider;
     private transient List<PolicyProvider> policyProviders;
-    private transient EndpointSerializer serializer;
     private String xml;
 
     protected InterfaceContract bindingInterfaceContract;
@@ -111,6 +111,37 @@
         super(registry);
     }
 
+    protected void copyFrom(RuntimeEndpointImpl copy) {
+        this.xml = copy.xml;
+
+        this.component = copy.component;
+        this.service = copy.service;
+        this.interfaceContract = copy.interfaceContract;
+        this.serviceInterfaceContract = copy.serviceInterfaceContract;
+
+        this.binding = copy.binding;
+        this.bindingInterfaceContract = copy.interfaceContract;
+        this.bindingInvocationChain = copy.bindingInvocationChain;
+
+        this.callbackEndpointReferences = copy.callbackEndpointReferences;
+
+        this.requiredIntents = copy.requiredIntents;
+        this.policySets = copy.policySets;
+
+        this.uri = copy.uri;
+        this.remote = copy.remote;
+        this.unresolved = copy.unresolved;
+
+        this.chains = copy.chains;
+        this.invocationChainMap = copy.invocationChainMap;
+        this.bindingProvider = copy.bindingProvider;
+        this.policyProviders = copy.policyProviders;
+
+        if (this.compositeContext == null && copy.compositeContext != null) {
+            bind(copy.compositeContext);
+        }
+    }
+
     public void bind(CompositeContext compositeContext) {
         this.compositeContext = compositeContext;
         bind(compositeContext.getExtensionPointRegistry(), 
compositeContext.getEndpointRegistry());
@@ -231,7 +262,7 @@
 
         //InterfaceContract targetContract = getInterfaceContract();
         // TODO - EPR - why is this looking at the component types. The 
endpoint should have the right interface contract by this time
-        InterfaceContract targetContract = getServiceInterfaceContract();
+        InterfaceContract targetContract = 
getComponentTypeServiceInterfaceContract();
         // setInterfaceContract(targetContract);
         for (Operation operation : 
sourceContract.getInterface().getOperations()) {
             Operation targetOperation = 
interfaceContractMapper.map(targetContract.getInterface(), operation);
@@ -422,7 +453,7 @@
         }
     }
 
-    public ServiceBindingProvider getBindingProvider() {
+    public synchronized ServiceBindingProvider getBindingProvider() {
         if (bindingProvider == null) {
             BindingProviderFactory factory =
                 
(BindingProviderFactory)providerFactories.getProviderFactory(getBinding().getClass());
@@ -460,18 +491,6 @@
         return compositeContext;
     }
 
-    private synchronized EndpointSerializer getSerializer() {
-        if (serializer == null) {
-            if (registry != null) {
-                serializer =
-                    
registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(EndpointSerializer.class);
-            } else {
-                throw new IllegalStateException("No extension registry is 
set");
-            }
-        }
-        return serializer;
-    }
-
     @Override
     protected void reset() {
         super.reset();
@@ -479,7 +498,17 @@
     }
 
     @Override
-    public void resolve() {
+    protected synchronized void resolve() {
+        if (xml != null && component == null) {
+            if (compositeContext == null) {
+                compositeContext = 
CompositeContext.getCurrentCompositeContext();
+                if (compositeContext != null) {
+                    bind(compositeContext);
+                }
+            }
+            RuntimeEndpointImpl ep = 
(RuntimeEndpointImpl)serializer.readEndpoint(xml);
+            copyFrom(ep);
+        }
         super.resolve();
     }
 
@@ -493,12 +522,12 @@
             bindingInterfaceContract = getInterfaceContract();
         }
         if (bindingInterfaceContract == null) {
-            bindingInterfaceContract = getServiceInterfaceContract();
+            bindingInterfaceContract = 
getComponentTypeServiceInterfaceContract();
         }
         return bindingInterfaceContract;
     }
 
-    public InterfaceContract getServiceInterfaceContract() {
+    public InterfaceContract getComponentTypeServiceInterfaceContract() {
         resolve();
         if (serviceInterfaceContract != null) {
             return serviceInterfaceContract;
@@ -512,48 +541,21 @@
         }
         return serviceInterfaceContract;
     }
-    
-    public Object writeReplace() throws ObjectStreamException {
-        return new EndpointProxy(getSerializer(), this);
-    }
-
-    public static class EndpointProxy implements Serializable {
-        private static final long serialVersionUID = 6708978267158501975L;
-        private String xml;
-
-        /**
-         * @param serializer
-         */
-        public EndpointProxy() {
-            super();
-        }
-
-        /**
-         * @param serializer
-         */
-        public EndpointProxy(EndpointSerializer serializer, Endpoint endpoint) 
{
-            super();
-            try {
-                this.xml = serializer.write(endpoint);
-            } catch (Exception e) {
-                throw new ServiceRuntimeException(e);
-            }
-        }
 
-        public Object readResolve() throws ObjectStreamException {
-            CompositeContext context = 
CompositeContext.getCurrentCompositeContext();
-            if (context == null) {
-                throw new IllegalStateException("No context is available for 
deserializing the endpoint");
-            }
-            UtilityExtensionPoint utilities =
-                
context.getExtensionPointRegistry().getExtensionPoint(UtilityExtensionPoint.class);
-            EndpointSerializer serializer = 
utilities.getUtility(EndpointSerializer.class);
-            try {
-                RuntimeEndpoint endpoint = (RuntimeEndpoint) 
serializer.readEndpoint(xml);
-                endpoint.bind(context);
-                return endpoint;
-            } catch (IOException e) {
-                throw new ServiceRuntimeException(e);
+    public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
+        this.uri = in.readUTF();
+        this.xml = in.readUTF();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF(getURI());
+        if (serializer == null && xml != null) {
+            out.writeUTF(xml);
+        } else {
+            if (serializer != null) {
+                out.writeUTF(serializer.write(this));
+            } else {
+                throw new IllegalStateException("No serializer is configured");
             }
         }
     }

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
 Wed Nov 18 19:06:40 2009
@@ -19,9 +19,10 @@
 
 package org.apache.tuscany.sca.core.assembly.impl;
 
+import java.io.Externalizable;
 import java.io.IOException;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.lang.reflect.InvocationTargetException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -35,7 +36,6 @@
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Contract;
-import org.apache.tuscany.sca.assembly.Endpoint;
 import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.assembly.impl.EndpointReferenceImpl;
 import org.apache.tuscany.sca.context.CompositeContext;
@@ -77,7 +77,7 @@
 /**
  * Runtime model for Endpoint that supports java serialization
  */
-public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl 
implements RuntimeEndpointReference {
+public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl 
implements RuntimeEndpointReference, Externalizable {
     private transient CompositeContext compositeContext;
     private transient RuntimeWireProcessor wireProcessor;
     private transient InterfaceContractMapper interfaceContractMapper;
@@ -88,7 +88,7 @@
     private transient EndpointRegistry endpointRegistry;
 
     private transient List<InvocationChain> chains;
-    private transient final Map<Operation, InvocationChain> invocationChainMap 
=
+    private transient Map<Operation, InvocationChain> invocationChainMap =
         new ConcurrentHashMap<Operation, InvocationChain>();
     private transient InvocationChain bindingInvocationChain;
 
@@ -100,6 +100,9 @@
 
     protected InterfaceContract bindingInterfaceContract;
     protected InterfaceContract referenceInterfaceContract;
+
+    private String xml;
+
     /**
      * No-arg constructor for Java serilization
      */
@@ -111,11 +114,43 @@
         super(registry);
     }
 
+    protected void copyFrom(RuntimeEndpointReferenceImpl copy) {
+        this.xml = copy.xml;
+
+        this.component = copy.component;
+        this.reference = copy.reference;
+        this.interfaceContract = copy.interfaceContract;
+        this.referenceInterfaceContract = copy.referenceInterfaceContract;
+        this.callbackEndpoint = copy.callbackEndpoint;
+        this.targetEndpoint = copy.targetEndpoint;
+
+        this.binding = copy.binding;
+        this.bindingInterfaceContract = copy.interfaceContract;
+        this.bindingInvocationChain = copy.bindingInvocationChain;
+
+        this.requiredIntents = copy.requiredIntents;
+        this.policySets = copy.policySets;
+
+        this.uri = copy.uri;
+        this.remote = copy.remote;
+        this.unresolved = copy.unresolved;
+        this.status = copy.status;
+
+        this.chains = copy.chains;
+        this.invocationChainMap = copy.invocationChainMap;
+        this.bindingProvider = copy.bindingProvider;
+        this.policyProviders = copy.policyProviders;
+
+        if (this.compositeContext == null && copy.compositeContext != null) {
+            bind(copy.compositeContext);
+        }
+    }
+
     public void bind(CompositeContext compositeContext) {
         this.compositeContext = compositeContext;
         bind(compositeContext.getExtensionPointRegistry(), 
compositeContext.getEndpointRegistry());
     }
-    
+
     public void bind(ExtensionPointRegistry registry, EndpointRegistry 
endpointRegistry) {
         if (compositeContext == null) {
             compositeContext = new CompositeContext(registry, 
endpointRegistry);
@@ -214,7 +249,7 @@
      */
     private void initInvocationChains() {
         chains = new ArrayList<InvocationChain>();
-        InterfaceContract sourceContract = getReferenceInterfaceContract();
+        InterfaceContract sourceContract = 
getComponentTypeReferenceInterfaceContract();
         // TODO - EPR why is this looking at the component types. The endpoint 
reference should have the right interface contract by this time
         //InterfaceContract sourceContract = 
getLeafInterfaceContract(endpointReference);
 
@@ -252,14 +287,13 @@
      * is first used
      */
     private void resolveEndpointReference() {
+        resolve();
+
         boolean ok = eprBinder.bind(endpointRegistry, this);
         if (!ok) {
             throw new SCARuntimeException("Unable to bind " + this);
         }
 
-        // set the endpoint based on the resolved endpoint
-        Endpoint endpoint = getTargetEndpoint();
-
         // start the binding provider
         final ReferenceBindingProvider bindingProvider = getBindingProvider();
 
@@ -280,7 +314,6 @@
         // endpoint.setInterfaceContract(bindingContract);
     }
 
-
     private void initReferenceBindingInvocationChains() {
 
         // add the binding interceptors to the reference binding wire
@@ -369,10 +402,12 @@
     }
 
     public boolean isOutOfDate() {
+        resolve();
         return eprBinder.isOutOfDate(endpointRegistry, this);
     }
 
-    public ReferenceBindingProvider getBindingProvider() {
+    public synchronized ReferenceBindingProvider getBindingProvider() {
+        resolve();
         // For the case that binding.sca is implemented by another binding
         if (binding == null) {
             return null;
@@ -394,6 +429,7 @@
     }
 
     public synchronized List<PolicyProvider> getPolicyProviders() {
+        resolve();
         if (policyProviders == null) {
             policyProviders = new ArrayList<PolicyProvider>();
             for (PolicyProviderFactory factory : 
providerFactories.getPolicyProviderFactories()) {
@@ -413,7 +449,7 @@
         policyProviders = null;
         invocationChainMap.clear();
     }
-    
+
     public Contract getContract() {
         resolve();
         return reference;
@@ -422,18 +458,6 @@
     public CompositeContext getCompositeContext() {
         return compositeContext;
     }
-    
-    private synchronized EndpointSerializer getSerializer() {
-        if (serializer == null) {
-            if (registry != null) {
-                serializer =
-                    
registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(EndpointSerializer.class);
-            } else {
-                throw new IllegalStateException("No extension registry is 
set");
-            }
-        }
-        return serializer;
-    }
 
     public InterfaceContract getBindingInterfaceContract() {
         resolve();
@@ -445,12 +469,12 @@
             bindingInterfaceContract = getInterfaceContract();
         }
         if (bindingInterfaceContract == null) {
-            bindingInterfaceContract = getReferenceInterfaceContract();
+            bindingInterfaceContract = 
getComponentTypeReferenceInterfaceContract();
         }
         return bindingInterfaceContract;
     }
 
-    public InterfaceContract getReferenceInterfaceContract() {
+    public InterfaceContract getComponentTypeReferenceInterfaceContract() {
         resolve();
         if (referenceInterfaceContract != null) {
             return referenceInterfaceContract;
@@ -464,52 +488,38 @@
         }
         return referenceInterfaceContract;
     }
-    public Object writeReplace() throws ObjectStreamException {
-        return new EndpointReferenceProxy(getSerializer(), this);
-    }
 
-    public static class EndpointReferenceProxy implements Serializable {
-        private static final long serialVersionUID = 6708978267158501975L;
-        private String xml;
-
-        /**
-         * @param serializer
-         */
-        public EndpointReferenceProxy() {
-            super();
-        }
-
-        /**
-         * @param serializer
-         */
-        public EndpointReferenceProxy(EndpointSerializer serializer, 
EndpointReference endpointReference) {
-            super();
-            try {
-                this.xml = serializer.write(endpointReference);
-            } catch (Exception e) {
-                throw new ServiceRuntimeException(e);
+    @Override
+    protected synchronized void resolve() {
+        if (xml != null && component == null) {
+            if (compositeContext == null) {
+                compositeContext = 
CompositeContext.getCurrentCompositeContext();
+                if (compositeContext != null) {
+                    bind(compositeContext);
+                }
             }
+            RuntimeEndpointReferenceImpl epr = 
(RuntimeEndpointReferenceImpl)serializer.readEndpointReference(xml);
+            copyFrom(epr);
         }
+        super.resolve();
+    }
+
+    public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
+        this.uri = in.readUTF();
+        this.xml = in.readUTF();
+    }
 
-        public Object readResolve() throws ObjectStreamException {
-            CompositeContext context = 
CompositeContext.getCurrentCompositeContext();
-            if (context == null) {
-                throw new IllegalStateException("No context is available for 
deserializing the endpoint");
-            }
-            UtilityExtensionPoint utilities =
-                
context.getExtensionPointRegistry().getExtensionPoint(UtilityExtensionPoint.class);
-            EndpointSerializer serializer = 
utilities.getUtility(EndpointSerializer.class);
-            EndpointReferenceBinder eprBinder = 
utilities.getUtility(EndpointReferenceBinder.class);
-            try {
-                RuntimeEndpointReference epr = (RuntimeEndpointReference) 
serializer.readEndpointReference(xml);
-                epr.bind(context);
-                eprBinder.bind(context.getEndpointRegistry(), epr);
-                return epr;
-            } catch (IOException e) {
-                throw new ServiceRuntimeException(e);
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF(getURI());
+        if (serializer == null && xml != null) {
+            out.writeUTF(xml);
+        } else {
+            if (serializer != null) {
+                out.writeUTF(serializer.write(this));
+            } else {
+                throw new IllegalStateException("No serializer is configured");
             }
         }
     }
 
-
 }

Modified: 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
 (original)
+++ 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
 Wed Nov 18 19:06:40 2009
@@ -274,7 +274,7 @@
     private Operation findOperation(String operationName, 
RuntimeEndpointReference epr) {
         Operation reseultOperation = null;
 
-        for (Operation operation : 
epr.getReferenceInterfaceContract().getInterface().getOperations()) {
+        for (Operation operation : 
epr.getComponentTypeReferenceInterfaceContract().getInterface().getOperations())
 {
             if (operationName.equalsIgnoreCase(operation.getName())) {
                 reseultOperation = operation;
                 break;

Modified: 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
 (original)
+++ 
tuscany/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
 Wed Nov 18 19:06:40 2009
@@ -89,8 +89,8 @@
             
service.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
             for( Endpoint endpoint : service.getEndpoints() ) {
                 RuntimeEndpoint ep = (RuntimeEndpoint) endpoint;
-                if (ep.getServiceInterfaceContract() != null) {
-                    
ep.getServiceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
+                if (ep.getComponentTypeServiceInterfaceContract() != null) {
+                    
ep.getComponentTypeServiceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
                 }
             } // end for
         } // end for
@@ -99,8 +99,8 @@
             
reference.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
             for (EndpointReference endpointReference : 
reference.getEndpointReferences()) {
                 RuntimeEndpointReference epr = 
(RuntimeEndpointReference)endpointReference;
-                if (epr.getReferenceInterfaceContract() != null) {
-                    
epr.getReferenceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
+                if (epr.getComponentTypeReferenceInterfaceContract() != null) {
+                    
epr.getComponentTypeReferenceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME);
                 }
             } // end for */
         } // end for

Modified: 
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
 (original)
+++ 
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
 Wed Nov 18 19:06:40 2009
@@ -149,7 +149,7 @@
                     List<EndpointReference> wires = 
callbackReference.getEndpointReferences();
                     if (!wires.isEmpty()) {
                         RuntimeEndpointReference epr = 
(RuntimeEndpointReference) wires.get(0);
-                        
callbackWires.put(epr.getReferenceInterfaceContract().getInterface().toString(),
+                        
callbackWires.put(epr.getComponentTypeReferenceInterfaceContract().getInterface().toString(),
                                           wires);
                     }
                 }

Modified: 
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=881883&r1=881882&r2=881883&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 (original)
+++ 
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 Wed Nov 18 19:06:40 2009
@@ -134,6 +134,7 @@
 
                 this.compositeContext =
                     new CompositeContext(manager.registry, endpointRegistry, 
domainComposite);
+                CompositeContext.setThreadCompositeContext(compositeContext);
             } finally {
                 // Reset the thread context monitor
                 manager.monitorFactory.setContextMonitor(tcm);
@@ -216,6 +217,7 @@
             this.compositeContext = null;
             
             ThreadMessageContext.removeMessageContext();
+            CompositeContext.removeCompositeContext();
 
         } catch (ActivationException e) {
             throw new IllegalStateException(e);


Reply via email to