Author: jsdelfino
Date: Tue Mar 25 18:11:08 2008
New Revision: 641102
URL: http://svn.apache.org/viewvc?rev=641102&view=rev
Log:
Fix for TUSCANY-2120. Create service references dynamically to invoke the node
manager and start/stop nodes using the correct node URI. Also some minor
cleanup, renamed DomainNodeLauncher to DomainManagerLauncher and remaining
instances of DomainAdmin to DomainManager to make naming consistent.
Added:
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java
- copied, changed from r640314,
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java
- copied, changed from r640314,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
- copied, changed from r640314,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
Removed:
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
Modified:
incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
incubator/tuscany/java/sca/modules/workspace-admin/pom.xml
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
incubator/tuscany/java/sca/tutorial/domain/launch/LaunchTutorialDomainManager.java
Modified:
incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
(original)
+++
incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
Tue Mar 25 18:11:08 2008
@@ -73,4 +73,40 @@
*/
public abstract SCANode2 createSCANode(String configurationURI) throws
Node2Exception;
+ /**
+ * Creates a new SCA node.
+ *
+ * @param compositeURI the URI of the composite to use
+ * @param contributions the URI of the composite to use
+ * @return a new SCA node.
+ */
+ public abstract SCANode2 createSCANode(String compositeURI,
SCAContribution... contributions) throws Node2Exception;
+
+ /**
+ * Represents an SCA contribution uri + location.
+ */
+ public final class SCAContribution {
+ private String uri;
+ private String location;
+
+ /**
+ * Constructs a new SCA contribution.
+ *
+ * @param uri
+ * @param location
+ */
+ public SCAContribution(String uri, String location) {
+ this.uri = uri;
+ this.location = location;
+ }
+
+ public String getURI() {
+ return uri;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+ }
+
}
Modified:
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
Tue Mar 25 18:11:08 2008
@@ -33,7 +33,13 @@
public NodeFactoryImpl() {
}
+ @Override
public SCANode2 createSCANode(String configurationURI) throws
Node2Exception {
return new NodeImpl(configurationURI);
+ }
+
+ @Override
+ public SCANode2 createSCANode(String compositeURI, SCAContribution...
contributions) throws Node2Exception {
+ return new NodeImpl(compositeURI, contributions);
}
}
Modified:
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Tue Mar 25 18:11:08 2008
@@ -38,9 +38,8 @@
import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.CompositeService;
-import org.apache.tuscany.sca.assembly.SCABinding;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
@@ -48,17 +47,15 @@
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.assembly.ActivationException;
import org.apache.tuscany.sca.core.assembly.CompositeActivator;
-import org.apache.tuscany.sca.core.context.ServiceReferenceImpl;
import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
import org.apache.tuscany.sca.implementation.node.ConfiguredNodeImplementation;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.implementation.node.NodeImplementationFactory;
import org.apache.tuscany.sca.node.Node2Exception;
import org.apache.tuscany.sca.node.SCAClient;
import org.apache.tuscany.sca.node.SCANode2;
+import org.apache.tuscany.sca.node.SCANode2Factory.SCAContribution;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentContext;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
import org.osoa.sca.CallableReference;
import org.osoa.sca.ServiceReference;
import org.osoa.sca.ServiceRuntimeException;
@@ -72,12 +69,15 @@
private final static Logger logger =
Logger.getLogger(NodeImpl.class.getName());
- // The node configuration URI
- private String configurationURI;
-
+ // The node configuration name, used for logging
+ private String configurationName;
+
// The Tuscany runtime that does the hard work
private ReallySmallRuntime runtime;
- private CompositeActivator activator;
+ private CompositeActivator compositeActivator;
+ private XMLInputFactory inputFactory;
+ private ModelFactoryExtensionPoint modelFactories;
+ private StAXArtifactProcessorExtensionPoint artifactProcessors;
// The composite loaded into this node
private Composite composite;
@@ -88,55 +88,117 @@
* @param configurationURI the URI of the node configuration information.
* @throws Node2Exception
*/
- public NodeImpl(String configurationURI) throws Node2Exception {
+ NodeImpl(String configurationURI) throws Node2Exception {
+ configurationName = configurationURI;
+ logger.log(Level.INFO, "Creating node: " + configurationName);
+
try {
- init(configurationURI);
+ // Initialize the runtime
+ initRuntime();
+
+ // Read the node configuration feed
+ StAXArtifactProcessor<ConfiguredNodeImplementation>
configurationProcessor =
artifactProcessors.getProcessor(ConfiguredNodeImplementation.class);
+ URL configurationURL = new URL(configurationURI);
+ InputStream is = configurationURL.openStream();
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+ reader.nextTag();
+ ConfiguredNodeImplementation configuration =
configurationProcessor.read(reader);
+ is.close();
+
+ // Resolve contribution URLs
+ for (Contribution contribution: configuration.getContributions()) {
+ URL contributionURL = new URL(configurationURL,
contribution.getLocation());
+ contribution.setLocation(contributionURL.toString());
+ }
+
+ // Resolve composite URL
+ URL compositeURL = new URL(configurationURL,
configuration.getComposite().getURI());
+ configuration.getComposite().setURI(compositeURL.toString());
+
+ // Configure the node
+ configureNode(configuration);
} catch (Exception e) {
throw new Node2Exception(e);
}
}
- private void init(String configurationURI) throws Exception {
- logger.log(Level.INFO, "Creating node: " + configurationURI);
+ /**
+ * Constructs a new SCA node.
+ *
+ * @param compositeURI
+ * @param contributions
+ * @throws Node2Exception
+ */
+ NodeImpl(String compositeURI, SCAContribution[] contributions) throws
Node2Exception {
+ configurationName = compositeURI;
+ logger.log(Level.INFO, "Creating node: " + configurationName);
- this.configurationURI = configurationURI;
+ try {
+ // Initialize the runtime
+ initRuntime();
+
+ // Create a node configuration
+ NodeImplementationFactory nodeImplementationFactory =
modelFactories.getFactory(NodeImplementationFactory.class);
+ ConfiguredNodeImplementation configuration =
nodeImplementationFactory.createConfiguredNodeImplementation();
+
+ // Create composite model
+ AssemblyFactory assemblyFactory =
modelFactories.getFactory(AssemblyFactory.class);
+ Composite composite = assemblyFactory.createComposite();
+ composite.setURI(compositeURI);
+ composite.setUnresolved(true);
+
+ // Create contribution models
+ ContributionFactory contributionFactory =
modelFactories.getFactory(ContributionFactory.class);
+ for (SCAContribution c: contributions) {
+ Contribution contribution =
contributionFactory.createContribution();
+ contribution.setURI(c.getURI());
+ contribution.setLocation(c.getLocation());
+ contribution.setUnresolved(true);
+ configuration.getContributions().add(contribution);
+ }
+
+ // Configure the node
+ configureNode(configuration);
- // Create a node runtime for the domain contributions to run on
- ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
- runtime = new ReallySmallRuntime(contextClassLoader);
+ } catch (Exception e) {
+ throw new Node2Exception(e);
+ }
+ }
+
+ /**
+ * Initialize the Tuscany runtime.
+ *
+ * @throws Exception
+ */
+ private void initRuntime() throws Exception {
+
+ // Create a node runtime
+ runtime = new
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
runtime.start();
- activator = runtime.getCompositeActivator();
// Get the various factories we need
ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
- ModelFactoryExtensionPoint modelFactories =
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
- XMLInputFactory inputFactory =
modelFactories.getFactory(XMLInputFactory.class);
+ modelFactories =
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+ inputFactory = modelFactories.getFactory(XMLInputFactory.class);
// Create the required artifact processors
- StAXArtifactProcessorExtensionPoint artifactProcessors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<ConfiguredNodeImplementation>
configurationProcessor =
artifactProcessors.getProcessor(ConfiguredNodeImplementation.class);
- StAXArtifactProcessor<Composite> compositeProcessor =
artifactProcessors.getProcessor(Composite.class);
-
- // Read the node configuration feed
- URL configurationURL = new URL(configurationURI);
- InputStream is = configurationURL.openStream();
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- reader.nextTag();
- ConfiguredNodeImplementation configuration =
configurationProcessor.read(reader);
- is.close();
+ artifactProcessors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ // Save the composite activator
+ compositeActivator = runtime.getCompositeActivator();
+ }
+
+ private void configureNode(ConfiguredNodeImplementation configuration)
throws Exception {
+
// Find if any contribution JARs already available locally on the
classpath
- Map<String, URL> localContributions = new HashMap<String, URL>();
- collectJARs(localContributions, contextClassLoader);
+ Map<String, URL> localContributions = localContributions();
// Load the specified contributions
ContributionService contributionService =
runtime.getContributionService();
List<Contribution> contributions = new ArrayList<Contribution>();
for (Contribution contribution: configuration.getContributions()) {
-
- // Build contribution URL
- URL contributionURL = new URL(configurationURL,
contribution.getLocation());
+ URL contributionURL = new URL(contribution.getLocation());
// Extract contribution file name
String file =contributionURL.getPath();
@@ -158,10 +220,11 @@
}
// Load the specified composite
- URL compositeURL = new URL(configurationURL,
configuration.getComposite().getURI());
+ StAXArtifactProcessor<Composite> compositeProcessor =
artifactProcessors.getProcessor(Composite.class);
+ URL compositeURL = new URL(configuration.getComposite().getURI());
logger.log(Level.INFO, "Loading composite: " + compositeURL);
- is = compositeURL.openStream();
- reader = inputFactory.createXMLStreamReader(is);
+ InputStream is = compositeURL.openStream();
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
composite = compositeProcessor.read(reader);
// Resolve it within the context of the first contribution
@@ -172,8 +235,8 @@
// This is temporary to make the activator happy
AssemblyFactory assemblyFactory = runtime.getAssemblyFactory();
Composite tempComposite = assemblyFactory.createComposite();
- tempComposite.setName(new QName(configurationURI, "temp"));
- tempComposite.setURI(configurationURI);
+ tempComposite.setName(new QName("http://tempuri.org", "temp"));
+ tempComposite.setURI("http://tempuri.org");
// Include the node composite in the top-level composite
tempComposite.getIncludes().add(composite);
@@ -183,15 +246,15 @@
}
public void start() throws Node2Exception {
- logger.log(Level.INFO, "Starting node: " + configurationURI);
+ logger.log(Level.INFO, "Starting node: " + configurationName);
try {
// Activate the composite
- activator.activate(composite);
+ compositeActivator.activate(composite);
// Start the composite
- activator.start(composite);
+ compositeActivator.start(composite);
} catch (ActivationException e) {
throw new Node2Exception(e);
@@ -199,30 +262,21 @@
}
public void stop() throws Node2Exception {
- logger.log(Level.INFO, "Stopping node: " + configurationURI);
+ logger.log(Level.INFO, "Stopping node: " + configurationName);
try {
// Stop the composite
- activator.stop(composite);
+ compositeActivator.stop(composite);
// Deactivate the composite
- activator.deactivate(composite);
+ compositeActivator.deactivate(composite);
} catch (ActivationException e) {
throw new Node2Exception(e);
}
}
- /**
- * Returns the extension point registry used by this node.
- *
- * @return
- */
- public ExtensionPointRegistry getExtensionPointRegistry() {
- return runtime.getExtensionPointRegistry();
- }
-
public <B, R extends CallableReference<B>> R cast(B target) throws
IllegalArgumentException {
return (R)runtime.getProxyFactory().cast(target);
}
@@ -236,39 +290,6 @@
return serviceReference.getService();
}
- public <B> ServiceReference<B> createServiceReference(Class<B>
businessInterface, String targetURI) {
- try {
-
- AssemblyFactory assemblyFactory = runtime.getAssemblyFactory();
- Composite composite = assemblyFactory.createComposite();
- composite.setName(new QName(configurationURI, "default"));
- RuntimeComponent component =
(RuntimeComponent)assemblyFactory.createComponent();
- component.setName("default");
- component.setURI("default");
-
runtime.getCompositeActivator().configureComponentContext(component);
- composite.getComponents().add(component);
- RuntimeComponentReference reference =
(RuntimeComponentReference)assemblyFactory.createComponentReference();
- reference.setName("default");
- ModelFactoryExtensionPoint factories =
-
runtime.getExtensionPointRegistry().getExtensionPoint(ModelFactoryExtensionPoint.class);
- JavaInterfaceFactory javaInterfaceFactory =
factories.getFactory(JavaInterfaceFactory.class);
- InterfaceContract interfaceContract =
javaInterfaceFactory.createJavaInterfaceContract();
-
interfaceContract.setInterface(javaInterfaceFactory.createJavaInterface(businessInterface));
- reference.setInterfaceContract(interfaceContract);
- component.getReferences().add(reference);
- reference.setComponent(component);
- SCABindingFactory scaBindingFactory =
factories.getFactory(SCABindingFactory.class);
- SCABinding binding = scaBindingFactory.createSCABinding();
-
- binding.setURI(targetURI);
- reference.getBindings().add(binding);
- return new ServiceReferenceImpl<B>(businessInterface, component,
reference, binding, runtime
- .getProxyFactory(), runtime.getCompositeActivator());
- } catch (Exception e) {
- throw new ServiceRuntimeException(e);
- }
- }
-
public <B> ServiceReference<B> getServiceReference(Class<B>
businessInterface, String name) {
// Extract the component name
@@ -310,13 +331,12 @@
}
componentContext =
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();
- return
componentContext.createSelfReference(businessInterface, compositeService
- .getPromotedService());
+ return
componentContext.createSelfReference(businessInterface,
compositeService.getPromotedService());
}
break;
}
}
- // No matching service is found
+ // No matching service found
throw new ServiceRuntimeException("Composite service not found: "
+ name);
} else {
componentContext =
((RuntimeComponent)component).getComponentContext();
@@ -328,6 +348,26 @@
}
}
+ /**
+ * Returns the extension point registry used by this node.
+ *
+ * @return
+ */
+ public ExtensionPointRegistry getExtensionPointRegistry() {
+ return runtime.getExtensionPointRegistry();
+ }
+
+ /**
+ * Returns contribution JARs available on the classpath.
+ *
+ * @return
+ */
+ private static Map<String, URL> localContributions () {
+ Map<String, URL> localContributions = new HashMap<String, URL>();
+ collectJARs(localContributions,
Thread.currentThread().getContextClassLoader());
+ return localContributions;
+ }
+
/**
* Collect JARs on the classpath of a URLClassLoader
* @param urls
Copied:
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java
(from r640314,
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java?p2=incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java&p1=incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java&r1=640314&r2=641102&rev=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java
(original)
+++
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java
Tue Mar 25 18:11:08 2008
@@ -28,9 +28,9 @@
*
* @version $Rev$ $Date$
*/
-public class DomainNodeLauncher {
+public class DomainManagerLauncher {
- private final static Logger logger =
Logger.getLogger(DomainNodeLauncher.class.getName());
+ private final static Logger logger =
Logger.getLogger(DomainManagerLauncher.class.getName());
public static void main(String[] args) throws Exception {
logger.info("Apache Tuscany SCA Domain Manager starting...");
@@ -39,7 +39,7 @@
Object admin;
try {
// Set up runtime ClassLoader
- ClassLoader runtimeClassLoader =
NodeLauncherUtil.runtimeClassLoader(DomainNodeLauncher.class.getClassLoader());
+ ClassLoader runtimeClassLoader =
NodeLauncherUtil.runtimeClassLoader(Thread.currentThread().getContextClassLoader());
if (runtimeClassLoader != null) {
Thread.currentThread().setContextClassLoader(runtimeClassLoader);
}
@@ -47,8 +47,8 @@
// Create the daemon
// We use Java reflection here as only the runtime class
- // loader knows the runtime classes required by the daemon
- String className =
"org.apache.tuscany.sca.workspace.admin.launcher.DomainAdminLauncherBootstrap";
+ // loader knows the runtime classes required by the manager
+ String className =
"org.apache.tuscany.sca.workspace.admin.launcher.DomainManagerLauncherBootstrap";
if (runtimeClassLoader != null) {
adminClass = Class.forName(className, true,
runtimeClassLoader);
} else {
Modified:
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
(original)
+++
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
Tue Mar 25 18:11:08 2008
@@ -33,7 +33,7 @@
public static void main(String[] args) throws Exception {
if (args.length != 0) {
if (args[0].equals("domain")) {
- DomainNodeLauncher.main(args);
+ DomainManagerLauncher.main(args);
} else {
NodeLauncher.main(args);
}
Modified: incubator/tuscany/java/sca/modules/workspace-admin/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/pom.xml?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-admin/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/workspace-admin/pom.xml Tue Mar 25
18:11:08 2008
@@ -61,6 +61,12 @@
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-workspace-impl</artifactId>
<version>2.0-incubating-SNAPSHOT</version>
</dependency>
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
Tue Mar 25 18:11:08 2008
@@ -26,6 +26,7 @@
import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeTitle;
import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.contributionURI;
import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.locationURL;
+import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.newRuntime;
import java.io.IOException;
import java.io.InputStream;
@@ -143,9 +144,10 @@
@Init
public void initialize() throws ParserConfigurationException {
+ // Bootstrap a runtime to get a populated registry
// FIXME Remove this later
- // Bootstrap a registry
- ExtensionPointRegistry registry = registry();
+ ReallySmallRuntime runtime = newRuntime();
+ ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
// Get model factories
modelFactories =
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
@@ -668,22 +670,6 @@
item.setAlternate(compositeAlternateLink(contributionLocation,
deployableURI));
item.setRelated(relatedLink(deployable));
return item;
- }
-
- /**
- * Temporary instantiation of a dummy runtime to get a registry populated
- * with all the right things.
- *
- * @return the registry
- */
- private static ExtensionPointRegistry registry() {
- try {
- ReallySmallRuntime runtime = new
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
- runtime.start();
- return runtime.getExtensionPointRegistry();
- } catch (ActivationException e) {
- throw new ServiceRuntimeException(e);
- }
}
/**
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
Tue Mar 25 18:11:08 2008
@@ -26,6 +26,24 @@
import javax.xml.namespace.QName;
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.assembly.ActivationException;
+import org.apache.tuscany.sca.core.assembly.CompositeActivator;
+import org.apache.tuscany.sca.core.context.ServiceReferenceImpl;
+import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
+import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.ServiceRuntimeException;
+
/**
* Common functions and constants used by the admin components.
*
@@ -172,5 +190,60 @@
}
}
return null;
+ }
+
+ /**
+ * Create a new service reference dynamically.
+ *
+ * @param <B>
+ * @param businessInterface
+ * @param binding
+ * @param assemblyFactory
+ * @param compositeActivator
+ * @return
+ */
+ static <B> ServiceReference<B> dynamicReference(Class<B>
businessInterface, Binding binding, AssemblyFactory assemblyFactory,
CompositeActivator compositeActivator) {
+ try {
+
+ Composite composite = assemblyFactory.createComposite();
+ composite.setName(new QName("http://tempuri.org", "default"));
+ RuntimeComponent component =
(RuntimeComponent)assemblyFactory.createComponent();
+ component.setName("default");
+ component.setURI("default");
+ compositeActivator.configureComponentContext(component);
+ composite.getComponents().add(component);
+ RuntimeComponentReference reference =
(RuntimeComponentReference)assemblyFactory.createComponentReference();
+ reference.setName("default");
+ JavaInterfaceFactory javaInterfaceFactory =
compositeActivator.getJavaInterfaceFactory();
+ InterfaceContract interfaceContract =
javaInterfaceFactory.createJavaInterfaceContract();
+
interfaceContract.setInterface(javaInterfaceFactory.createJavaInterface(businessInterface));
+ reference.setInterfaceContract(interfaceContract);
+ component.getReferences().add(reference);
+ reference.setComponent(component);
+ reference.getBindings().add(binding);
+
+ ProxyFactory proxyFactory = compositeActivator.getProxyFactory();
+ return new ServiceReferenceImpl<B>(businessInterface, component,
reference, binding, proxyFactory, compositeActivator);
+
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ /**
+ * Temporary instantiation of a dummy Tuscany runtime.
+ * FIXME We need a better way to bootstrap without having to create
+ * a runtime instance at all.
+ *
+ * @return
+ */
+ static ReallySmallRuntime newRuntime() {
+ try {
+ ReallySmallRuntime runtime = new
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
+ runtime.start();
+ return runtime;
+ } catch (ActivationException e) {
+ throw new ServiceRuntimeException(e);
+ }
}
}
Modified:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
Tue Mar 25 18:11:08 2008
@@ -20,6 +20,8 @@
package org.apache.tuscany.sca.workspace.admin.impl;
import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeQName;
+import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.dynamicReference;
+import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.newRuntime;
import static
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.nodeURI;
import java.net.URI;
@@ -29,11 +31,19 @@
import javax.xml.namespace.QName;
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.binding.atom.AtomBinding;
+import org.apache.tuscany.sca.binding.atom.AtomBindingFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.assembly.CompositeActivator;
+import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
import org.apache.tuscany.sca.implementation.data.collection.Entry;
import org.apache.tuscany.sca.implementation.data.collection.Item;
import org.apache.tuscany.sca.implementation.data.collection.ItemCollection;
import
org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.osoa.sca.ServiceReference;
import org.osoa.sca.ServiceRuntimeException;
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Reference;
@@ -54,14 +64,27 @@
@Reference
public LocalItemCollection cloudCollection;
- @Reference
- public ItemCollection processCollection;
+ private AssemblyFactory assemblyFactory;
+ private AtomBindingFactory atomBindingFactory;
+ private CompositeActivator compositeActivator;
/**
* Initialize the component.
*/
@Init
public void initialize() {
+
+ // Get a runtime
+ ReallySmallRuntime runtime = newRuntime();
+
+ // Get its composite activator
+ compositeActivator = runtime.getCompositeActivator();
+
+ // Get the model factories
+ ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
+ ModelFactoryExtensionPoint modelFactories =
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+ assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+ atomBindingFactory =
modelFactories.getFactory(AtomBindingFactory.class);
}
public Entry<String, Item>[] getAll() {
@@ -73,6 +96,7 @@
// Dispatch to the hosts hosting these nodes
List<Entry<String, Item>> entries = new
ArrayList<Entry<String,Item>>();
for (String host: hosts(nodeEntries)) {
+ ItemCollection processCollection = processCollection(host);
for (Entry<String, Item> remoteEntry: processCollection.getAll()) {
entries.add(remoteEntry);
}
@@ -89,7 +113,7 @@
String host = host(key);
// Dispatch the request to that host
- String uri = "http://" + host + ":9990/node/processes/" + key;
+ ItemCollection processCollection = processCollection(host);
return processCollection.get(key);
}
@@ -105,7 +129,7 @@
}
// Dispatch the request to that host
- String uri = "http://" + host + ":9990/node/processes/" + key;
+ ItemCollection processCollection = processCollection(host);
return processCollection.post(key, item);
}
@@ -120,7 +144,7 @@
String host = host(key);
// Dispatch the request to that host
- String uri = "http://" + host + ":9990/node/processes/" + key;
+ ItemCollection processCollection = processCollection(host);
processCollection.delete(key);
}
@@ -139,7 +163,7 @@
}
// Dispatch the request to that host
- String uri = "http://" + host + ":9990/node/processes/" + key;
+ ItemCollection processCollection = processCollection(host);
return processCollection.query(queryString);
} else {
@@ -208,4 +232,18 @@
}
}
+ /**
+ * Returns a proxy to the process collection service on the specified
+ * host.
+ *
+ * @param host
+ * @return
+ */
+ private ItemCollection processCollection(String host) {
+ AtomBinding binding = atomBindingFactory.createAtomBinding();
+ binding.setURI("http://" + host + ":9990/node/processes");
+ ServiceReference<ItemCollection> reference =
dynamicReference(ItemCollection.class, binding, assemblyFactory,
compositeActivator);
+ return reference.getService();
+ }
+
}
Copied:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java
(from r640314,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java&r1=640314&r2=641102&rev=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java
Tue Mar 25 18:11:08 2008
@@ -26,18 +26,18 @@
*
* @version $Rev$ $Date$
*/
-public class DomainAdminLauncherBootstrap {
+public class DomainManagerLauncherBootstrap {
private SCADomain admin;
/**
* Constructs a new admin bootstrap.
*/
- public DomainAdminLauncherBootstrap() throws Exception {
+ public DomainManagerLauncherBootstrap() throws Exception {
}
public void start() throws Exception {
- admin = SCADomain.newInstance("DomainAdmin.composite");
+ admin = SCADomain.newInstance("DomainManager.composite");
}
public void stop() throws Exception {
Copied:
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
(from r640314,
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite?p2=incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite&p1=incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite&r1=640314&r2=641102&rev=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainAdmin.composite
(original)
+++
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
Tue Mar 25 18:11:08 2008
@@ -20,7 +20,7 @@
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0"
- name="DomainAdmin">
+ name="DomainManager">
<component name="AdminUI">
<t:implementation.widget location="home.html"/>
@@ -168,9 +168,6 @@
<t:binding.atom uri="http://localhost:9990/processes"
title="Log"/>
</service>
<reference name="cloudCollection"
target="CloudCollectionComponent/LocalItemCollection"/>
- <reference name="processCollection"
target="NodeProcessCollectionComponent/ItemCollection">
- <t:binding.atom/>
- </reference>
</component>
<component name="NodeProcessCollectionComponent">
Modified:
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/node/LaunchDomain.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
(original)
+++
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
Tue Mar 25 18:11:08 2008
@@ -18,7 +18,7 @@
*/
package node;
-import org.apache.tuscany.sca.node.launcher.DomainNodeLauncher;
+import org.apache.tuscany.sca.node.launcher.DomainManagerLauncher;
/**
* This server program that loads a composite to provide simple registry
function.
@@ -27,7 +27,7 @@
*/
public class LaunchDomain {
public static void main(String[] args) throws Exception {
- DomainNodeLauncher.main(args);
+ DomainManagerLauncher.main(args);
}
}
Modified:
incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
(original)
+++
incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
Tue Mar 25 18:11:08 2008
@@ -49,7 +49,7 @@
try {
System.out.println("Setting up domain");
- SCADomain.newInstance("DomainAdmin.composite");
+ SCADomain.newInstance("DomainManager.composite");
SCANode2Factory nodeFactory = SCANode2Factory.newInstance();
nodeC =
nodeFactory.createSCANode("http://localhost:9990/node-image/NodeC");
Modified:
incubator/tuscany/java/sca/tutorial/domain/launch/LaunchTutorialDomainManager.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tutorial/domain/launch/LaunchTutorialDomainManager.java?rev=641102&r1=641101&r2=641102&view=diff
==============================================================================
---
incubator/tuscany/java/sca/tutorial/domain/launch/LaunchTutorialDomainManager.java
(original)
+++
incubator/tuscany/java/sca/tutorial/domain/launch/LaunchTutorialDomainManager.java
Tue Mar 25 18:11:08 2008
@@ -27,7 +27,7 @@
public class LaunchTutorialDomainManager {
public static void main(String[] args) throws Exception {
- org.apache.tuscany.sca.node.launcher.DomainNodeLauncher.main(args);
+ org.apache.tuscany.sca.node.launcher.DomainManagerLauncher.main(args);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]