summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-11-18 19:06:40 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-11-18 19:06:40 +0000
commitbf06eae38c29f648bb1b443ea8ea525c61bb630b (patch)
treeb648cd4ede1614b4ab8645380366ee0049d33dff /java
parentb22c95d7267170bfe00620be78302aa365cfdc8f (diff)
Rename the methods on RuntimeEndpoint/RuntimeEndpointReference
Defer the unmarshalling of XML into endpoint/endpointReference git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@881883 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java2
-rw-r--r--java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java2
-rw-r--r--java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java4
-rw-r--r--java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java2
-rw-r--r--java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java4
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java18
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java13
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java2
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java2
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java4
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java25
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java130
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java144
-rw-r--r--java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java2
-rw-r--r--java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java8
-rw-r--r--java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java2
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java2
17 files changed, 193 insertions, 173 deletions
diff --git a/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java b/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
index d7d2b083db..155d07ae86 100644
--- a/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
+++ b/java/sca/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
@@ -64,7 +64,7 @@ class AtomServiceBindingProvider implements ServiceBindingProvider {
this.mediator = mediator;
// TUSCANY-3166
- this.serviceContract = endpoint.getServiceInterfaceContract();
+ this.serviceContract = endpoint.getComponentTypeServiceInterfaceContract();
}
public InterfaceContract getBindingInterfaceContract() {
diff --git a/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java b/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
index 9034e24485..2b4bd2fed6 100644
--- a/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
+++ b/java/sca/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceServlet.java
@@ -290,7 +290,7 @@ public class JSONRPCServiceServlet extends JSONRPCServlet {
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();
diff --git a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
index 47c16335a5..22b1e5bd99 100644
--- a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
+++ b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAReferenceBindingProvider.java
@@ -164,9 +164,9 @@ public class RuntimeSCAReferenceBindingProvider implements ReferenceBindingProvi
// 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();
}
}
}
diff --git a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
index 15a2385c92..500b4ba304 100644
--- a/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
+++ b/java/sca/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/RuntimeSCAServiceBindingProvider.java
@@ -118,7 +118,7 @@ public class RuntimeSCAServiceBindingProvider implements ServiceBindingProvider
if (distributedProvider != null) {
return distributedProvider.getBindingInterfaceContract();
} else {
- return endpoint.getServiceInterfaceContract();
+ return endpoint.getComponentTypeServiceInterfaceContract();
}
}
diff --git a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
index 5a6f9739ef..d4018e22a7 100644
--- a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
+++ b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataBindingRuntimeWireProcessor.java
@@ -148,7 +148,7 @@ public class DataBindingRuntimeWireProcessor implements RuntimeWireProcessor {
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 class DataBindingRuntimeWireProcessor implements RuntimeWireProcessor {
}
public void process(RuntimeEndpointReference endpointReference) {
- InterfaceContract sourceContract = endpointReference.getReferenceInterfaceContract();
+ InterfaceContract sourceContract = endpointReference.getComponentTypeReferenceInterfaceContract();
InterfaceContract targetContract = endpointReference.getBindingInterfaceContract();
if (targetContract == null) {
targetContract = sourceContract;
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
index a55de8f20e..6e3bedc205 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
@@ -34,6 +34,7 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentContext;
* @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 class CompositeContext {
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 class CompositeContext {
public Composite getDomainComposite() {
return domainComposite;
}
-
+
+ public static void setThreadCompositeContext(CompositeContext value) {
+ context.set(value);
+ }
+
+ public static void removeCompositeContext() {
+ context.remove();
+ }
}
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
index a16d8e14f7..981872fdfa 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointSerializer.java
@@ -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 @@ import org.apache.tuscany.sca.assembly.EndpointReference;
* 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);
}
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
index 2a4cf4fc84..178f184c1f 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
@@ -54,5 +54,5 @@ public interface RuntimeEndpoint extends Endpoint, Invocable, Serializable {
* code can process.
* @return The target component type service interface contract
*/
- InterfaceContract getServiceInterfaceContract();
+ InterfaceContract getComponentTypeServiceInterfaceContract();
}
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
index d6f8431d48..58e453ed37 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpointReference.java
@@ -53,7 +53,7 @@ public interface RuntimeEndpointReference extends EndpointReference, Invocable,
* implementation code uses to make the outbound call.
* @return The source component type reference interface contract
*/
- InterfaceContract getReferenceInterfaceContract();
+ InterfaceContract getComponentTypeReferenceInterfaceContract();
boolean isOutOfDate();
void rebuild();
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
index 4b1fd203fc..58ffb0f9b9 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java
@@ -513,14 +513,14 @@ public class CompositeActivatorImpl implements CompositeActivator {
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);
}
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
index 6eb392f084..abe0fdd78b 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointSerializerImpl.java
@@ -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.contribution.processor.StAXArtifactProcessorExtens
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 @@ public class EndpointSerializerImpl implements EndpointSerializer {
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 @@ public class EndpointSerializerImpl implements EndpointSerializer {
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 @@ public class EndpointSerializerImpl implements EndpointSerializer {
writer.close();
return sw.toString();
} catch (Exception e) {
- throw wrap(e);
+ throw new ServiceRuntimeException(e);
}
}
}
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
index 29262949df..e0722d3b76 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointImpl.java
@@ -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.ComponentService;
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 @@ import org.oasisopen.sca.ServiceRuntimeException;
/**
* 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 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
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 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
//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 class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
}
}
- public ServiceBindingProvider getBindingProvider() {
+ public synchronized ServiceBindingProvider getBindingProvider() {
if (bindingProvider == null) {
BindingProviderFactory factory =
(BindingProviderFactory)providerFactories.getProviderFactory(getBinding().getClass());
@@ -460,18 +491,6 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
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 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
}
@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 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
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 @@ public class RuntimeEndpointImpl extends EndpointImpl implements RuntimeEndpoint
}
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 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);
- try {
- RuntimeEndpoint endpoint = (RuntimeEndpoint) serializer.readEndpoint(xml);
- endpoint.bind(context);
- return endpoint;
- } 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");
}
}
}
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
index 5b2de2f01f..d38de90422 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeEndpointReferenceImpl.java
@@ -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.ComponentService;
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 @@ import org.oasisopen.sca.ServiceRuntimeException;
/**
* 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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
protected InterfaceContract bindingInterfaceContract;
protected InterfaceContract referenceInterfaceContract;
+
+ private String xml;
+
/**
* No-arg constructor for Java serilization
*/
@@ -111,11 +114,43 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
*/
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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
* 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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
// endpoint.setInterfaceContract(bindingContract);
}
-
private void initReferenceBindingInvocationChains() {
// add the binding interceptors to the reference binding wire
@@ -369,10 +402,12 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
}
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 class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
}
public synchronized List<PolicyProvider> getPolicyProviders() {
+ resolve();
if (policyProviders == null) {
policyProviders = new ArrayList<PolicyProvider>();
for (PolicyProviderFactory factory : providerFactories.getPolicyProviderFactories()) {
@@ -413,7 +449,7 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
policyProviders = null;
invocationChainMap.clear();
}
-
+
public Contract getContract() {
resolve();
return reference;
@@ -422,18 +458,6 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
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 @@ public class RuntimeEndpointReferenceImpl extends EndpointReferenceImpl implemen
}
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 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 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");
}
}
}
-
}
diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
index dc73ab044a..d2dbd4880d 100644
--- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
+++ b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java
@@ -274,7 +274,7 @@ public class ODEExternalService {
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;
diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
index ef35f4cd66..8880d20a37 100644
--- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
+++ b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java
@@ -89,8 +89,8 @@ public class BPELImplementationProvider implements ImplementationProvider {
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 @@ public class BPELImplementationProvider implements ImplementationProvider {
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
diff --git a/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java b/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
index 421c95672b..9fbfa9a83b 100644
--- a/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
+++ b/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaComponentContextProvider.java
@@ -149,7 +149,7 @@ public class JavaComponentContextProvider {
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);
}
}
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
index 65b55452cc..62f18f08e0 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
@@ -134,6 +134,7 @@ public class NodeImpl implements Node, Client {
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 @@ public class NodeImpl implements Node, Client {
this.compositeContext = null;
ThreadMessageContext.removeMessageContext();
+ CompositeContext.removeCompositeContext();
} catch (ActivationException e) {
throw new IllegalStateException(e);