summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-07-03 06:30:18 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-07-03 06:30:18 +0000
commit355268626d0493523956137113a8e61dcf615e46 (patch)
tree9b7bb71b6303bf3b22853fdbe2121f58c8524203 /sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany
parentefe9a1562dcad578b80c02a628c045c9febd01f2 (diff)
Clean up factory instantiation, add a static helper to create simple nodes, and update impl to correctly resolve dependencies for installed contributions
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@960160 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany')
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/Node.java5
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/NodeFactory.java62
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/DeployedComposite.java8
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/NodeImpl.java73
4 files changed, 101 insertions, 47 deletions
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/Node.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/Node.java
index 28520cb2c1..64bf38f7da 100644
--- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/Node.java
+++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/Node.java
@@ -137,7 +137,7 @@ public interface Node {
* @throws ValidationException
*/
String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException;
- String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException;
+ String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException, ValidationException;
/**
* 4599 10.5.2 add Deployment Composite & update Deployment Composite
@@ -183,8 +183,9 @@ public interface Node {
*
* @param compositeURI
* @throws ActivationException
+ * @throws ValidationException
*/
- void addToDomainLevelComposite(String compositeURI) throws ActivationException;
+ void addToDomainLevelComposite(String compositeURI) throws ActivationException, ValidationException;
/**
* 4687 10.7.2 remove From Domain-Level Composite
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/NodeFactory.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/NodeFactory.java
index 13ede41b1d..47eba43477 100644
--- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/NodeFactory.java
+++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/NodeFactory.java
@@ -44,22 +44,64 @@ public class NodeFactory {
private ExtensibleDomainRegistryFactory domainRegistryFactory;
private RuntimeAssemblyFactory assemblyFactory;
- // TODO: keep this method?
- public static Node createNode() {
- return new NodeFactory().createNode("default");
+ /**
+ * A helper method to simplify creating a Node with an installed contributions
+ * @param compositeURI URI of a composite to run relative to the first contribution
+ * if compositeURI is null then all deployable composites in the first contribution will be run
+ * @param contributionURLs URLs to contributions to install
+ * @return a Node with installed contributions
+ */
+ public static Node createNode(String compositeURI, String... contributionURLs) {
+ try {
+
+ Node node = newInstance().createOneoffNode();
+ String uri = "";
+ for (int i=contributionURLs.length-1; i>-1; i--) {
+ boolean runDeployables = (i==0) && (compositeURI == null);
+ int lastDot = contributionURLs[i].lastIndexOf('.');
+ int lastSep = contributionURLs[i].lastIndexOf("/");
+ if (lastDot > -1 && lastSep > -1 && lastDot > lastSep) {
+ uri = contributionURLs[i].substring(lastSep+1, lastDot);
+ } else {
+ uri = contributionURLs[i];
+ }
+
+ node.installContribution(uri, contributionURLs[i], null, null, runDeployables);
+ }
+ if (compositeURI != null) {
+ if (uri.endsWith("/")) {
+ uri = uri + compositeURI;
+ } else {
+ uri = uri + "/" + compositeURI;
+ }
+ node.addToDomainLevelComposite(uri);
+ }
+ return node;
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
- public NodeFactory() {
- init(null);
+ public static NodeFactory newInstance() {
+ return new NodeFactory(null);
+ }
+ public static NodeFactory newInstance(Properties config) {
+ return new NodeFactory(config);
}
- public NodeFactory(Properties config) {
+ protected NodeFactory(Properties config) {
init(config);
}
- public Node createNode(String domainName) {
- EndpointRegistry endpointRegistry = domainRegistryFactory.getEndpointRegistry("default", domainName);
- return new NodeImpl(domainName, deployer, compositeActivator, endpointRegistry, extensionPointRegistry);
+ public Node createNode(String domainURI) {
+ EndpointRegistry endpointRegistry = domainRegistryFactory.getEndpointRegistry("default", domainURI);
+ return new NodeImpl(domainURI, deployer, compositeActivator, endpointRegistry, extensionPointRegistry, null);
+ }
+
+ protected Node createOneoffNode() {
+ EndpointRegistry endpointRegistry = domainRegistryFactory.getEndpointRegistry("default", "default");
+ return new NodeImpl("default", deployer, compositeActivator, endpointRegistry, extensionPointRegistry, this);
}
public void stop() {
@@ -91,8 +133,6 @@ public class NodeFactory {
extensionPointRegistry.getExtensionPoint(ModuleActivatorExtensionPoint.class);
this.domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionPointRegistry);
-// DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionPointRegistry);
-// domainRegistryFactory.getEndpointRegistry(config.getProperty("reguri"), config.getProperty("defaultDomainName"));
}
/**
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/DeployedComposite.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/DeployedComposite.java
index 98055464bd..98c90d5bbc 100644
--- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/DeployedComposite.java
+++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/DeployedComposite.java
@@ -59,7 +59,7 @@ public class DeployedComposite {
Deployer deployer,
CompositeActivator compositeActivator,
EndpointRegistry endpointRegistry,
- ExtensionPointRegistry extensionPointRegistry) throws ActivationException {
+ ExtensionPointRegistry extensionPointRegistry) throws ValidationException, ActivationException {
this.composite = composite;
this.installedContribution = ic;
this.dependedOnContributions = dependedOnContributions;
@@ -69,12 +69,14 @@ public class DeployedComposite {
this.extensionPointRegistry = extensionPointRegistry;
try {
init();
- } catch (Exception e) {
+ } catch (ContributionResolveException e) {
+ throw new ActivationException(e);
+ } catch (CompositeBuilderException e) {
throw new ActivationException(e);
}
}
- protected void init() throws ValidationException, ContributionResolveException, CompositeBuilderException, ActivationException {
+ protected void init() throws ValidationException, ActivationException, ContributionResolveException, CompositeBuilderException {
List<Contribution> contribution = new ArrayList<Contribution>();
contribution.add(installedContribution.getContribution());
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/NodeImpl.java
index a52770860d..b59d7b5555 100644
--- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/NodeImpl.java
+++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/node2/impl/NodeImpl.java
@@ -31,7 +31,6 @@ import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.common.java.io.IOHelper;
import org.apache.tuscany.sca.contribution.Artifact;
@@ -39,11 +38,11 @@ import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionMetadata;
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.deployment.Deployer;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.ValidationException;
import org.apache.tuscany.sca.node2.Node;
+import org.apache.tuscany.sca.node2.NodeFactory;
import org.apache.tuscany.sca.runtime.ActivationException;
import org.apache.tuscany.sca.runtime.CompositeActivator;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
@@ -59,13 +58,15 @@ public class NodeImpl implements Node {
private CompositeActivator compositeActivator;
private EndpointRegistry endpointRegistry;
private ExtensionPointRegistry extensionPointRegistry;
+ private NodeFactory nodeFactory;
- public NodeImpl(String domainName, Deployer deployer, CompositeActivator compositeActivator, EndpointRegistry endpointRegistry, ExtensionPointRegistry extensionPointRegistry) {
+ public NodeImpl(String domainName, Deployer deployer, CompositeActivator compositeActivator, EndpointRegistry endpointRegistry, ExtensionPointRegistry extensionPointRegistry, NodeFactory nodeFactory) {
this.domainName = domainName;
this.deployer = deployer;
this.compositeActivator = compositeActivator;
this.endpointRegistry = endpointRegistry;
this.extensionPointRegistry = extensionPointRegistry;
+ this.nodeFactory = nodeFactory;
}
public String installContribution(String contributionURL) throws ContributionReadException, ActivationException, ValidationException {
@@ -112,7 +113,38 @@ public class NodeImpl implements Node {
for (Composite c : ic.getDefaultDeployables()) {
runComposite(c, ic);
}
+ } else {
+ contribution.getDeployables().clear();
+
+ List<Contribution> dependentContributions = calculateDependentContributions(ic);
+
+ Monitor monitor = deployer.createMonitor();
+ try {
+ deployer.resolve(contribution, dependentContributions, monitor);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ monitor.analyzeProblems();
+ }
+ }
+
+ protected List<Contribution> calculateDependentContributions(InstalledContribution ic) {
+ List<Contribution> dependentContributions = new ArrayList<Contribution>();
+ if (ic.getDependentContributionURIs() != null) {
+ // if the install specified dependent uris use just those contributions
+ for (String uri : ic.getDependentContributionURIs()) {
+ InstalledContribution dependee = installedContributions.get(uri);
+ if (dependee != null) {
+ dependentContributions.add(dependee.getContribution());
+ }
+ }
+ } else {
+ // otherwise use all available contributions for dependents
+ for (InstalledContribution ics : installedContributions.values()) {
+ dependentContributions.add(ics.getContribution());
+ }
}
+ return dependentContributions;
}
public String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException {
@@ -122,7 +154,7 @@ public class NodeImpl implements Node {
return addDeploymentComposite(contributionURI, composite);
}
- public String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException {
+ public String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException, ValidationException {
InstalledContribution ic = installedContributions.get(contributionURI);
if (ic == null) {
throw new IllegalArgumentException("contribution not installed: " + contributionURI);
@@ -132,7 +164,7 @@ public class NodeImpl implements Node {
return compositeArtifcatURI;
}
- public void addToDomainLevelComposite(String compositeURI) throws ActivationException {
+ public void addToDomainLevelComposite(String compositeURI) throws ActivationException, ValidationException {
String contributionURI = getContributionUriForArtifact(compositeURI);
InstalledContribution ic = installedContributions.get(contributionURI);
if (ic == null) {
@@ -222,6 +254,9 @@ public class NodeImpl implements Node {
e.printStackTrace();
}
}
+ if (nodeFactory != null) {
+ nodeFactory.stop();
+ }
}
public <T> T getService(Class<T> interfaze, String serviceURI) throws NoSuchServiceException {
@@ -272,22 +307,8 @@ public class NodeImpl implements Node {
return contributionURI;
}
- protected void runComposite(Composite c, InstalledContribution ic) throws ActivationException {
- List<Contribution> dependentContributions = new ArrayList<Contribution>();
- if (ic.getDependentContributionURIs() != null) {
- // if the install specified dependent uris use just those contributions
- for (String uri : ic.getDependentContributionURIs()) {
- InstalledContribution dependee = installedContributions.get(uri);
- if (dependee != null) {
- dependentContributions.add(dependee.getContribution());
- }
- }
- } else {
- // otherwise use all available contributions for dependents
- for (InstalledContribution ics : installedContributions.values()) {
- dependentContributions.add(ics.getContribution());
- }
- }
+ protected void runComposite(Composite c, InstalledContribution ic) throws ActivationException, ValidationException {
+ List<Contribution> dependentContributions = calculateDependentContributions(ic);
DeployedComposite dc = new DeployedComposite(c, ic, dependentContributions, deployer, compositeActivator, endpointRegistry, extensionPointRegistry);
ic.getDeployedComposites().add(dc);
@@ -309,14 +330,4 @@ public class NodeImpl implements Node {
}
return dependentContributionURIs;
}
-
- public Deployer getDeployer() {
- return deployer;
- }
-
- public AssemblyFactory getAssemblyFactory() {
- FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class);
- return factories.getFactory(AssemblyFactory.class);
- }
-
}