You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/04/25 19:47:31 UTC
svn commit: r651665 - in /incubator/tuscany/java/sca/modules:
implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/
node2-api/src/main/java/org/apache/tuscany/sca/node/
node2-impl/src/main/java/org/apache/tuscan...
Author: jsdelfino
Date: Fri Apr 25 10:47:30 2008
New Revision: 651665
URL: http://svn.apache.org/viewvc?rev=651665&view=rev
Log:
Added a constructor to NodeImpl allowing the content of a composite in addition to its URI, useful if you already have that composite in hand and don't want to read it again from the file.
Modified:
incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java
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/NodeLauncher.java
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java
Modified: incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java Fri Apr 25 10:47:30 2008
@@ -111,6 +111,22 @@
}
/**
+ * Bootstrap a new SCA node.
+ *
+ * @param compositeURI
+ * @param uris
+ * @param locations
+ */
+ public NodeImplementationLauncherBootstrap(String compositeURI, String compositeContent, String[] uris, String[] locations) throws Exception {
+ SCANode2Factory nodeFactory = SCANode2Factory.newInstance();
+ SCAContribution[] contributions = new SCAContribution[uris.length];
+ for (int i = 0; i < uris.length; i++) {
+ contributions[i] = new SCAContribution(uris[i], locations[i]);
+ }
+ node = new NodeFacade(nodeFactory.createSCANode(compositeURI, compositeContent, contributions));
+ }
+
+ /**
* Returns the SCA node.
*
* @return
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=651665&r1=651664&r2=651665&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 Fri Apr 25 10:47:30 2008
@@ -83,6 +83,16 @@
public abstract SCANode2 createSCANode(String compositeURI, SCAContribution... contributions);
/**
+ * Creates a new SCA node.
+ *
+ * @param compositeURI the URI of the composite to use
+ * @param compositeContent the XML content of the composite to use
+ * @param contributions the URI of the contributions that provides the composites and related artifacts
+ * @return a new SCA node.
+ */
+ public abstract SCANode2 createSCANode(String compositeURI, String compositeContent, SCAContribution... contributions);
+
+ /**
* Represents an SCA contribution uri + location.
*/
public final static class SCAContribution {
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=651665&r1=651664&r2=651665&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 Fri Apr 25 10:47:30 2008
@@ -41,4 +41,9 @@
public SCANode2 createSCANode(String compositeURI, SCAContribution... contributions) {
return new NodeImpl(compositeURI, contributions);
}
+
+ @Override
+ public SCANode2 createSCANode(String compositeURI, String compositeContent, SCAContribution... contributions) {
+ return new NodeImpl(compositeURI, compositeContent, 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=651665&r1=651664&r2=651665&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 Fri Apr 25 10:47:30 2008
@@ -19,7 +19,9 @@
package org.apache.tuscany.sca.node.impl;
+import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.io.StringReader;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -164,6 +166,52 @@
}
}
+ /**
+ * Constructs a new SCA node.
+ *
+ * @param compositeURI
+ * @param compositeContent
+ * @param contributions
+ */
+ NodeImpl(String compositeURI, String compositeContent, SCAContribution[] contributions) {
+ configurationName = compositeURI;
+ logger.log(Level.INFO, "Creating node: " + configurationName);
+
+ try {
+ // Initialize the runtime
+ initRuntime();
+
+ // Create a node configuration
+ NodeImplementationFactory nodeImplementationFactory = modelFactories.getFactory(NodeImplementationFactory.class);
+ ConfiguredNodeImplementation configuration = nodeImplementationFactory.createConfiguredNodeImplementation();
+
+ // Read the composite model
+ StAXArtifactProcessor<Composite> compositeProcessor = artifactProcessors.getProcessor(Composite.class);
+ URL compositeURL = new URL(compositeURI);
+ logger.log(Level.INFO, "Loading composite: " + compositeURL);
+ InputStream is = new ByteArrayInputStream(compositeContent.getBytes());
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(compositeContent));
+ Composite composite = compositeProcessor.read(reader);
+ configuration.setComposite(composite);
+
+ // 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);
+
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
/**
* Initialize the Tuscany runtime.
*
@@ -219,11 +267,15 @@
// Load the specified composite
StAXArtifactProcessor<Composite> compositeProcessor = artifactProcessors.getProcessor(Composite.class);
- URL compositeURL = new URL(configuration.getComposite().getURI());
- logger.log(Level.INFO, "Loading composite: " + compositeURL);
- InputStream is = compositeURL.openStream();
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- composite = compositeProcessor.read(reader);
+ if (configuration.getComposite().getName() == null) {
+ URL compositeURL = new URL(configuration.getComposite().getURI());
+ logger.log(Level.INFO, "Loading composite: " + compositeURL);
+ InputStream is = compositeURL.openStream();
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+ composite = compositeProcessor.read(reader);
+ } else {
+ composite = configuration.getComposite();
+ }
// Resolve it within the context of the first contribution
Contribution mainContribution = contributions.get(contributions.size()-1);
Modified: incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java (original)
+++ incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java Fri Apr 25 10:47:30 2008
@@ -57,7 +57,7 @@
* @throws LauncherException
*/
public <T> T createNode(String configurationURI) throws LauncherException {
- return (T)node(configurationURI, null, null);
+ return (T)node(configurationURI, null, null, null);
}
/**
@@ -96,7 +96,20 @@
* @throws LauncherException
*/
public <T> T createNode(String compositeURI, Contribution...contributions) throws LauncherException {
- return (T)node(null, compositeURI, contributions);
+ return (T)node(null, compositeURI, null, contributions);
+ }
+
+ /**
+ * Creates a new Node.
+ *
+ * @param compositeURI
+ * @param compositeContent
+ * @param contributions
+ * @return a new node
+ * @throws LauncherException
+ */
+ public <T> T createNode(String compositeURI, String compositeContent, Contribution...contributions) throws LauncherException {
+ return (T)node(null, compositeURI, compositeContent, contributions);
}
public static void main(String[] args) throws Exception {
Modified: incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java (original)
+++ incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java Fri Apr 25 10:47:30 2008
@@ -271,7 +271,7 @@
* @param contributions
* @throws LauncherException
*/
- static Object node(String configurationURI, String compositeURI, NodeLauncher.Contribution[] contributions) throws LauncherException {
+ static Object node(String configurationURI, String compositeURI, String compositeContent, NodeLauncher.Contribution[] contributions) throws LauncherException {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
try {
// Set up runtime ClassLoader
@@ -296,6 +296,18 @@
// Construct the node with a configuration URI
bootstrap = bootstrapClass.getConstructor(String.class).newInstance(configurationURI);
+ } else if (compositeContent != null) {
+
+ // Construct the node with a composite URI and the URIs and
+ // locations of a list of contributions
+ Constructor<?> constructor = bootstrapClass.getConstructor(String.class, String.class, String[].class, String[].class);
+ String[] uris = new String[contributions.length];
+ String[] locations = new String[contributions.length];
+ for (int i = 0; i < contributions.length; i++) {
+ uris[i] = contributions[i].getURI();
+ locations[i] = contributions[i].getLocation();
+ }
+ bootstrap = constructor.newInstance(compositeURI, compositeContent, uris, locations);
} else {
// Construct the node with a composite URI and the URIs and