summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/node-impl/src
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-16 06:52:55 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-16 06:52:55 +0000
commitb264fae6da998eb032462b7287711d891498cd3e (patch)
tree9342de7ff260bba4568f5975e49a4d7b7cd58c80 /java/sca/modules/node-impl/src
parentce9150bd4c4880a4032030213de8626c21764bfd (diff)
Refactor the OSGi discovery service into node-implementation-osgi
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@794553 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/node-impl/src')
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java136
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java27
2 files changed, 90 insertions, 73 deletions
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
index 851f5fbe89..2f933486b1 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
@@ -24,10 +24,13 @@ import static org.apache.tuscany.sca.node.impl.NodeUtil.createURI;
import static org.apache.tuscany.sca.node.impl.NodeUtil.openStream;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.security.AccessController;
@@ -433,20 +436,6 @@ public class NodeFactoryImpl extends NodeFactory {
DefinitionsUtil.aggregate(defs, systemDefinitions);
}
- /*
- // Load the system definitions.xml from all of the loaded extension points
- DefinitionsProviderExtensionPoint definitionsProviders = extensionPoints.getExtensionPoint(DefinitionsProviderExtensionPoint.class);
-
- // aggregate all the definitions into a single definitions model
- try {
- for (DefinitionsProvider definitionsProvider : definitionsProviders.getDefinitionsProviders()) {
- DefinitionsUtil.aggregate(definitionsProvider.getDefinitions(), systemDefinitions);
- }
- } catch (DefinitionsProviderException e) {
- throw new IllegalStateException(e);
- }
- */
-
// create a system contribution to hold the definitions. The contribution
// will be extended later with definitions from application contributions
systemContribution = contributionFactory.createContribution();
@@ -477,63 +466,12 @@ public class NodeFactoryImpl extends NodeFactory {
return new DefaultExtensionPointRegistry();
}
- Composite configureNode(NodeConfiguration configuration) throws Exception {
-
- List<Contribution> contributions = new ArrayList<Contribution>();
-
- // Load the specified contributions
- for (ContributionConfiguration contrib : configuration.getContributions()) {
- URI contributionURI = createURI(contrib.getURI());
-
- URI uri = createURI(contrib.getLocation());
- if (uri.getScheme() == null) {
- uri = new File(contrib.getLocation()).toURI();
- }
- URL contributionURL = uri.toURL();
-
- // Load the contribution
- logger.log(Level.INFO, "Loading contribution: " + contributionURL);
- Contribution contribution = contributionProcessor.read(null, contributionURI, contributionURL);
- contributions.add(contribution);
-
- boolean attached = false;
- for (DeploymentComposite dc : contrib.getDeploymentComposites()) {
- if (dc.getContent() != null) {
- Reader xml = new StringReader(dc.getContent());
- attached = attachDeploymentComposite(contribution, xml, null, attached);
- } else if (dc.getLocation() != null) {
- URI dcURI = createURI(dc.getLocation());
- if (!dcURI.isAbsolute()) {
- Composite composite = null;
- // The location is pointing to an artifact within the contribution
- for (Artifact a : contribution.getArtifacts()) {
- if (dcURI.toString().equals(a.getURI())) {
- composite = (Composite)a.getModel();
- if (!attached) {
- contribution.getDeployables().clear();
- attached = true;
- }
- contribution.getDeployables().add(composite);
- break;
- }
- }
- if (composite == null) {
- // Not found
- throw new ServiceRuntimeException("Deployment composite " + dcURI
- + " cannot be found within contribution "
- + contribution.getLocation());
- }
- } else {
- URL url = dcURI.toURL();
- InputStream is = openStream(url);
- Reader xml = new InputStreamReader(is, "UTF-8");
- attached = attachDeploymentComposite(contribution, xml, url.toString(), attached);
- }
- }
- }
- analyzeProblems();
+ protected Composite configureNode(NodeConfiguration configuration, List<Contribution> contributions)
+ throws Exception {
+ if (contributions == null) {
+ // Load contributions
+ contributions = loadContributions(configuration);
}
-
// Build an aggregated SCA definitions model. Must be done before we try and
// resolve any contributions or composites as they may depend on the full
// definitions.xml picture
@@ -613,7 +551,65 @@ public class NodeFactoryImpl extends NodeFactory {
analyzeProblems();
return tempComposite;
+ }
+
+ private List<Contribution> loadContributions(NodeConfiguration configuration) throws MalformedURLException,
+ ContributionReadException, XMLStreamException, IOException, UnsupportedEncodingException, Exception {
+ List<Contribution> contributions = new ArrayList<Contribution>();
+
+ // Load the specified contributions
+ for (ContributionConfiguration contrib : configuration.getContributions()) {
+ URI contributionURI = createURI(contrib.getURI());
+
+ URI uri = createURI(contrib.getLocation());
+ if (uri.getScheme() == null) {
+ uri = new File(contrib.getLocation()).toURI();
+ }
+ URL contributionURL = uri.toURL();
+ // Load the contribution
+ logger.log(Level.INFO, "Loading contribution: " + contributionURL);
+ Contribution contribution = contributionProcessor.read(null, contributionURI, contributionURL);
+ contributions.add(contribution);
+
+ boolean attached = false;
+ for (DeploymentComposite dc : contrib.getDeploymentComposites()) {
+ if (dc.getContent() != null) {
+ Reader xml = new StringReader(dc.getContent());
+ attached = attachDeploymentComposite(contribution, xml, null, attached);
+ } else if (dc.getLocation() != null) {
+ URI dcURI = createURI(dc.getLocation());
+ if (!dcURI.isAbsolute()) {
+ Composite composite = null;
+ // The location is pointing to an artifact within the contribution
+ for (Artifact a : contribution.getArtifacts()) {
+ if (dcURI.toString().equals(a.getURI())) {
+ composite = (Composite)a.getModel();
+ if (!attached) {
+ contribution.getDeployables().clear();
+ attached = true;
+ }
+ contribution.getDeployables().add(composite);
+ break;
+ }
+ }
+ if (composite == null) {
+ // Not found
+ throw new ServiceRuntimeException("Deployment composite " + dcURI
+ + " cannot be found within contribution "
+ + contribution.getLocation());
+ }
+ } else {
+ URL url = dcURI.toURL();
+ InputStream is = openStream(url);
+ Reader xml = new InputStreamReader(is, "UTF-8");
+ attached = attachDeploymentComposite(contribution, xml, url.toString(), attached);
+ }
+ }
+ }
+ analyzeProblems();
+ }
+ return contributions;
}
protected static class NodeKey {
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 606c4b8c50..a35f078860 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
@@ -33,6 +33,7 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.core.assembly.ActivationException;
@@ -59,14 +60,32 @@ public class NodeImpl implements Node, Client {
private CompositeActivator compositeActivator;
private NodeConfiguration configuration;
private NodeFactoryImpl manager;
-
+ private List<Contribution> contributions;
private NodeManager mbean;
+ /**
+ * Create a node from the configuration
+ * @param manager
+ * @param configuration
+ */
public NodeImpl(NodeFactoryImpl manager, NodeConfiguration configuration) {
super();
this.configuration = configuration;
this.manager = manager;
}
+
+ /**
+ * Create a node from the configuration and loaded contributions
+ * @param manager
+ * @param configuration
+ * @param contributions
+ */
+ public NodeImpl(NodeFactoryImpl manager, NodeConfiguration configuration, List<Contribution> contributions) {
+ super();
+ this.configuration = configuration;
+ this.manager = manager;
+ this.contributions = new ArrayList<Contribution>(contributions);
+ }
public String getURI() {
return getConfiguration().getURI();
@@ -83,10 +102,12 @@ public class NodeImpl implements Node, Client {
this.proxyFactory = manager.proxyFactory;
this.compositeActivator =
manager.extensionPoints.getExtensionPoint(UtilityExtensionPoint.class).getUtility(CompositeActivator.class,
- this);
+ manager.getNodeKey(configuration));
try {
+ Composite composite = manager.configureNode(configuration, contributions);
+
// get the top level composite for this node
- compositeActivator.setDomainComposite(manager.configureNode(configuration));
+ compositeActivator.setDomainComposite(composite);
// Activate the composite
compositeActivator.activate(compositeActivator.getDomainComposite());