summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-05 18:38:10 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-05 18:38:10 +0000
commitb76e4724a219f78dab6f096591cf363223f7ca95 (patch)
treee6938eab287083ce50f675231f78a915d1ea3bac /java
parentcfd54b41d2ffb276de0b33e291934c9d1d380156 (diff)
Further refactor the CompositeContext to be the place to hold information about the Node
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@821953 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java48
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/CompositeActivatorImpl.java2
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java31
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java2
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java11
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java4
6 files changed, 58 insertions, 40 deletions
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 ee5482f07f..942f3bca78 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
@@ -19,20 +19,17 @@
package org.apache.tuscany.sca.context;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentContext;
-import org.oasisopen.sca.ServiceRuntimeException;
/**
+ * The context associated with the Node that provides access to ExtensionPointRegistry and EndpointRegistry
+ *
* @version $Rev$ $Date$
*/
public abstract class CompositeContext {
@@ -46,7 +43,7 @@ public abstract class CompositeContext {
if (to == null) {
return null;
}
- RuntimeComponent component = (RuntimeComponent) message.getTo().getComponent();
+ RuntimeComponent component = (RuntimeComponent)message.getTo().getComponent();
return component;
}
return null;
@@ -65,40 +62,23 @@ public abstract class CompositeContext {
}
/**
- * @param component
+ * Attach a component context to the component
+ * @param runtimeComponent
*/
- public static ComponentService getSingleService(Component component) {
- ComponentService targetService;
- List<ComponentService> services = component.getServices();
- List<ComponentService> regularServices = new ArrayList<ComponentService>();
- for (ComponentService service : services) {
- if (service.isForCallback()) {
- continue;
- }
- String name = service.getName();
- if (!name.startsWith("$") || name.startsWith("$dynamic$")) {
- regularServices.add(service);
- }
- }
- if (regularServices.size() == 0) {
- throw new ServiceRuntimeException("No service is declared on component " + component.getURI());
- }
- if (regularServices.size() != 1) {
- throw new ServiceRuntimeException("More than one service is declared on component " + component.getURI()
- + ". Service name is required to get the service.");
- }
- targetService = regularServices.get(0);
- return targetService;
- }
+ public abstract void bindComponent(RuntimeComponent runtimeComponent);
- public abstract void configureComponentContext(RuntimeComponent runtimeComponent);
-
+ /**
+ * Get the ExtensionPointRegistry for this node
+ * @return The ExtensionPointRegistry
+ */
public abstract ExtensionPointRegistry getExtensionPointRegistry();
/**
* Get the EndpointRegistry
- * @return
+ * @return The EndpointRegistry for this node
*/
public abstract EndpointRegistry getEndpointRegistry();
+
+ public abstract Composite getDomainComposite();
}
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 838ab8a2a0..de9b575926 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
@@ -496,7 +496,7 @@ public class CompositeActivatorImpl implements CompositeActivator {
return;
}
- compositeContext.configureComponentContext(runtimeComponent);
+ compositeContext.bindComponent(runtimeComponent);
// Reference bindings aren't started until the wire is first used
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
index 13b0299554..b88c395f31 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
@@ -20,6 +20,7 @@ package org.apache.tuscany.sca.core.context.impl;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Binding;
@@ -160,8 +161,36 @@ public class ComponentContextImpl implements RuntimeComponentContext {
throw new ServiceRuntimeException("Property not found: " + propertyName);
}
+ /**
+ * @param component
+ */
+ public static ComponentService getSingleService(Component component) {
+ ComponentService targetService;
+ List<ComponentService> services = component.getServices();
+ List<ComponentService> regularServices = new ArrayList<ComponentService>();
+ for (ComponentService service : services) {
+ if (service.isForCallback()) {
+ continue;
+ }
+ String name = service.getName();
+ if (!name.startsWith("$") || name.startsWith("$dynamic$")) {
+ regularServices.add(service);
+ }
+ }
+ if (regularServices.size() == 0) {
+ throw new ServiceRuntimeException("No service is declared on component " + component.getURI());
+ }
+ if (regularServices.size() != 1) {
+ throw new ServiceRuntimeException("More than one service is declared on component " + component.getURI()
+ + ". Service name is required to get the service.");
+ }
+ targetService = regularServices.get(0);
+ return targetService;
+ }
+
+
public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface) {
- ComponentService service = CompositeContext.getSingleService(component);
+ ComponentService service = getSingleService(component);
try {
return createSelfReference(businessInterface, service);
} catch (Exception e) {
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
index a1fc91e824..2bf4199f92 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
@@ -380,7 +380,7 @@ public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> {
fromXMLString();
this.component = (RuntimeComponent)endpointReference.getComponent();
- compositeContext.configureComponentContext(this.component);
+ compositeContext.bindComponent(this.component);
this.reference = (RuntimeComponentReference)endpointReference.getReference();
this.reference.setComponent(this.component);
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
index 4a3366e6fb..54acece3cc 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.node.impl;
+import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.context.ComponentContextFactory;
import org.apache.tuscany.sca.context.CompositeContext;
import org.apache.tuscany.sca.context.ContextFactoryExtensionPoint;
@@ -34,12 +35,14 @@ public class CompositeContextImpl extends CompositeContext {
private final ExtensionPointRegistry extensionPointRegistry;
private final EndpointRegistry endpointRegistry;
private final ComponentContextFactory componentContextFactory;
+ private final Composite domainComposite;
- public CompositeContextImpl(ExtensionPointRegistry registry, EndpointRegistry endpointRegistry) {
+ public CompositeContextImpl(ExtensionPointRegistry registry, EndpointRegistry endpointRegistry, Composite domainComposite) {
this.extensionPointRegistry = registry;
this.endpointRegistry = endpointRegistry;
ContextFactoryExtensionPoint contextFactories = registry.getExtensionPoint(ContextFactoryExtensionPoint.class);
this.componentContextFactory = contextFactories.getFactory(ComponentContextFactory.class);
+ this.domainComposite = domainComposite;
}
public ExtensionPointRegistry getExtensionPointRegistry() {
@@ -50,10 +53,14 @@ public class CompositeContextImpl extends CompositeContext {
return endpointRegistry;
}
- public void configureComponentContext(RuntimeComponent runtimeComponent) {
+ public void bindComponent(RuntimeComponent runtimeComponent) {
RuntimeComponentContext componentContext =
(RuntimeComponentContext)componentContextFactory.createComponentContext(this, runtimeComponent);
runtimeComponent.setComponentContext(componentContext);
}
+ public Composite getDomainComposite() {
+ return domainComposite;
+ }
+
}
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 86c693729b..aabb1c6abc 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
@@ -115,10 +115,10 @@ public class NodeImpl implements Node, Client {
// FIXME: Get the endpoint registry by the Node configuration
EndpointRegistry endpointRegistry = utilities.getUtility(EndpointRegistry.class);
- this.compositeContext = new CompositeContextImpl(manager.extensionPoints, endpointRegistry);
this.compositeActivator = utilities.getUtility(CompositeActivator.class);
try {
domainComposite = manager.configureNode(configuration, contributions);
+ this.compositeContext = new CompositeContextImpl(manager.extensionPoints, endpointRegistry, domainComposite);
// Activate the composite
compositeActivator.activate(domainComposite);
@@ -189,6 +189,8 @@ public class NodeImpl implements Node, Client {
manager.extensionPoints.getExtensionPoint(UtilityExtensionPoint.class).removeUtility(compositeActivator);
this.compositeActivator = null;
this.proxyFactory = null;
+ this.domainComposite = null;
+ this.compositeContext = null;
ThreadMessageContext.removeMessageContext();