Author: rfeng
Date: Mon Oct 5 18:38:10 2009
New Revision: 821953
URL: http://svn.apache.org/viewvc?rev=821953&view=rev
Log:
Further refactor the CompositeContext to be the place to hold information about
the Node
Modified:
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.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/context/impl/ComponentContextImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
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=821953&r1=821952&r2=821953&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
Mon Oct 5 18:38:10 2009
@@ -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 @@
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 @@
}
/**
- * @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();
}
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=821953&r1=821952&r2=821953&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
Mon Oct 5 18:38:10 2009
@@ -496,7 +496,7 @@
return;
}
- compositeContext.configureComponentContext(runtimeComponent);
+ compositeContext.bindComponent(runtimeComponent);
// Reference bindings aren't started until the wire is first used
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java?rev=821953&r1=821952&r2=821953&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
Mon Oct 5 18:38:10 2009
@@ -20,6 +20,7 @@
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 @@
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) {
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java?rev=821953&r1=821952&r2=821953&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
Mon Oct 5 18:38:10 2009
@@ -380,7 +380,7 @@
fromXMLString();
this.component =
(RuntimeComponent)endpointReference.getComponent();
- compositeContext.configureComponentContext(this.component);
+ compositeContext.bindComponent(this.component);
this.reference =
(RuntimeComponentReference)endpointReference.getReference();
this.reference.setComponent(this.component);
Modified:
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java?rev=821953&r1=821952&r2=821953&view=diff
==============================================================================
---
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
(original)
+++
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/CompositeContextImpl.java
Mon Oct 5 18:38:10 2009
@@ -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 @@
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 @@
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;
+ }
+
}
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=821953&r1=821952&r2=821953&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
Mon Oct 5 18:38:10 2009
@@ -115,10 +115,10 @@
// 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 @@
manager.extensionPoints.getExtensionPoint(UtilityExtensionPoint.class).removeUtility(compositeActivator);
this.compositeActivator = null;
this.proxyFactory = null;
+ this.domainComposite = null;
+ this.compositeContext = null;
ThreadMessageContext.removeMessageContext();