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);