From 8435e4751b9caa6c3cc2d9c60e3fca5becf8b5bf Mon Sep 17 00:00:00 2001 From: antelder Date: Tue, 17 May 2011 11:09:38 +0000 Subject: Merege the refactoring in nodeImpl2 back into NodeImpl git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1104140 13f79535-47bb-0310-9956-ffa450edef68 --- sca-java-2.x/trunk/modules/domain-node/pom.xml | 11 +- .../src/main/java/org/apache/tuscany/sca/Node.java | 74 +-- .../org/apache/tuscany/sca/TuscanyRuntime.java | 31 +- .../java/org/apache/tuscany/sca/impl/NodeImpl.java | 648 ++++++++------------- .../org/apache/tuscany/sca/impl/NodeImpl2.java | 399 ------------- .../org/apache/tuscany/sca/impl/Node2TestCase.java | 31 +- .../tuscany/sca/runtime/DeployerTestCase.java | 30 +- .../sca/runtime/DomainCompositeTestCase.java | 21 +- .../tuscany/sca/runtime/NodeXMLTestCase.java | 9 +- .../org/apache/tuscany/sca/runtime/PerfTest.java | 10 +- .../sca/runtime/TuscanyRuntimeTestCase.java | 68 ++- .../tuscany/sca/runtime/TwoNodesTestCase.java | 3 +- 12 files changed, 398 insertions(+), 937 deletions(-) delete mode 100644 sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl2.java (limited to 'sca-java-2.x/trunk/modules') diff --git a/sca-java-2.x/trunk/modules/domain-node/pom.xml b/sca-java-2.x/trunk/modules/domain-node/pom.xml index 6f61f64a98..610e188a3b 100644 --- a/sca-java-2.x/trunk/modules/domain-node/pom.xml +++ b/sca-java-2.x/trunk/modules/domain-node/pom.xml @@ -37,6 +37,11 @@ tuscany-node-impl 2.0-SNAPSHOT + + org.apache.tuscany.sca + tuscany-assembly-xml + 2.0-SNAPSHOT + org.apache.tuscany.sca @@ -58,12 +63,6 @@ 2.0-SNAPSHOT test - - org.apache.tuscany.sca - tuscany-assembly-xml - 2.0-SNAPSHOT - test - org.apache.tuscany.sca tuscany-binding-ws-wsdlgen diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java index afdfe90c3c..73e3dd540d 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java @@ -21,6 +21,7 @@ package org.apache.tuscany.sca; import java.io.Reader; import java.util.List; +import java.util.Map; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; @@ -48,32 +49,33 @@ public interface Node { * of the Assembly Specification. May be null. * @param dependentContributionURIs specifies the contributions that are used to resolve the dependencies of the * root contribution and other dependent contributions. May be null. - * @param startDeployables true if the composites defined as deployable in the contribution's sca-contribution.xml - * file or supplied metaData file should be started, false if they should not be. * @return the URI of the installed contribution * * @throws ContributionReadException * @throws ActivationException * @throws ValidationException */ - String installContribution(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ActivationException, ValidationException; + String installContribution(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs) throws ContributionReadException, ActivationException, ValidationException; - /** - * Creates an installed contribution from a supplied Contribution object. - * See section 10.5.1 of the Assembly Specification. - * - * @param contribution the Contribution object - * @param dependentContributionURIs specifies the contributions that are used to resolve the dependencies of the - * root contribution and other dependent contributions. May be null. - * @param startDeployables true if the composites defined as deployable in the contribution's sca-contribution.xml - * file or supplied metaData file should be started, false if they should not be. - * @return the URI of the installed contribution - * - * @throws ContributionReadException - * @throws ActivationException - * @throws ValidationException - */ - String installContribution(Contribution contribution, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ActivationException, ValidationException; + void installContribution(Contribution contribution, List dependentContributionURIs); + +// TODO: I'd still like this one but not in NodeImpl/registry yet +// /** +// * Creates an installed contribution from a supplied Contribution object. +// * See section 10.5.1 of the Assembly Specification. +// * +// * @param contribution the Contribution object +// * @param dependentContributionURIs specifies the contributions that are used to resolve the dependencies of the +// * root contribution and other dependent contributions. May be null. +// * @param startDeployables true if the composites defined as deployable in the contribution's sca-contribution.xml +// * file or supplied metaData file should be started, false if they should not be. +// * @return the URI of the installed contribution +// * +// * @throws ContributionReadException +// * @throws ActivationException +// * @throws ValidationException +// */ +// String installContribution(Contribution contribution, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ActivationException, ValidationException; /** * Creates an installed contribution from a supplied root contribution URL. @@ -111,7 +113,7 @@ public interface Node { * @throws ActivationException * @throws ValidationException */ - String start(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException; + String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException; /** * 4599 10.5.2 add Deployment Composite & update Deployment Composite @@ -135,7 +137,7 @@ public interface Node { * @throws ActivationException * @throws ValidationException */ - String start(String contributionURI, Composite composite) throws ActivationException, ValidationException; + String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException, ValidationException; /** * 4611 11.4.310.5.3 remove Contribution @@ -145,7 +147,7 @@ public interface Node { * @return List of contribution URIs (includes dependent contributions) which were removed * @throws ActivationException */ - List removeContribution(String contributionURI) throws ActivationException; + void uninstallContribution(String contributionURI) throws ActivationException; /** * 4677 10.7.1 add To Domain-Level Composite @@ -164,7 +166,9 @@ public interface Node { * @throws ValidationException * @throws ContributionReadException */ - void start(String contributionURI, String compositeURI) throws ActivationException, ValidationException, ContributionReadException; + void startComposite(String contributionURI, String compositeURI) throws ActivationException, ValidationException, ContributionReadException; + + List startDeployables(String contributionURI) throws ActivationException, ValidationException, ContributionReadException; /** * 4687 10.7.2 remove From Domain-Level Composite @@ -175,7 +179,7 @@ public interface Node { * @param compositeURI * @throws ActivationException */ - void stop(String contributionURI, String compositeURI) throws ActivationException; + void stopComposite(String contributionURI, String compositeURI) throws ActivationException; /** * 10.7.3 get Domain-Level Composite @@ -185,10 +189,7 @@ public interface Node { * * @return */ - Composite getDomainLevelComposite(); - - /* that previous one returns a Composte object but not sure what would be most appropriate, and having one return a string seems convenient: */ - String getDomainLevelCompositeAsString(); + Composite getDomainComposite(); /** * 4695 10.7.4 get QName Definition @@ -207,9 +208,9 @@ public interface Node { */ Object getQNameDefinition(String contributionURI, QName definition, QName symbolSpace); - /** - * Probably want to be able to stop it all at once so a method called stop or shutdown or destroy - */ +// /** +// * Probably want to be able to stop it all at once so a method called stop or shutdown or destroy +// */ void stop(); /** @@ -222,7 +223,8 @@ public interface Node { * @param contributionURI the contribution URI * @return the List of started composite URIs */ - List getStartedCompositeURIs(String contributionURI); +// List getStartedCompositeURIs(String contributionURI); + Map> getStartedComposites(); /** * Get the URIs of all the contributions installed on this Node @@ -234,8 +236,10 @@ public interface Node { * Get an installed Contribution * @param uri the URI of the contribution * @return the Contribution + * @throws ValidationException + * @throws ContributionReadException */ - Contribution getInstalledContribution(String uri); + Contribution getContribution(String uri) throws ContributionReadException, ValidationException; String getDomainName(); @@ -289,5 +293,9 @@ public interface Node { // */ // String updateDeploymentComposite(String uri, Reader compositeXML); // String updateDeploymentComposite(String uri, Composite composite); + + List getDeployableCompositeURIs(String contributionURI); + + void validateContribution(String string) throws ContributionReadException, ValidationException; } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/TuscanyRuntime.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/TuscanyRuntime.java index 74e86e5421..149599b8fd 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/TuscanyRuntime.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/TuscanyRuntime.java @@ -38,7 +38,6 @@ import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory; import org.apache.tuscany.sca.deployment.Deployer; import org.apache.tuscany.sca.impl.NodeImpl; -import org.apache.tuscany.sca.impl.NodeImpl2; import org.apache.tuscany.sca.monitor.ValidationException; import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; import org.apache.tuscany.sca.node.configuration.NodeConfiguration; @@ -103,19 +102,23 @@ public class TuscanyRuntime { public static Node runComposite(URI domainURI, String compositeURI, String contributionURL, String... dependentContributionURLs) { try { TuscanyRuntime runtime = newInstance(); - String domain = domainURI == null ? "default" : domainURI.toString(); + String domain = domainURI == null ? "default" : domainURI.toString(); DomainRegistry domainRegistry = runtime.domainRegistryFactory.getEndpointRegistry(domain, getDomainName(domain)); NodeImpl node = new NodeImpl(domain, runtime.deployer, runtime.compositeActivator, domainRegistry, runtime.extensionPointRegistry, runtime); if (dependentContributionURLs != null) { for (int i=dependentContributionURLs.length-1; i>-1; i--) { - node.installContribution(null, dependentContributionURLs[i], null, null, false); + node.installContribution(null, dependentContributionURLs[i], null, null); } } - String curi = node.installContribution(null, contributionURL, null, null, compositeURI == null); + String curi = node.installContribution(null, contributionURL, null, null); if (compositeURI != null) { - node.start(curi, compositeURI); + node.startComposite(curi, compositeURI); + } else { + for (String compURI : node.getDeployableCompositeURIs(curi)) { + node.startComposite(curi, compURI); + } } return node; @@ -150,15 +153,6 @@ public class TuscanyRuntime { return new NodeImpl(domainName, deployer, compositeActivator, domainRegistry, extensionPointRegistry, null); } - public NodeImpl2 createNode2(String domainURI) { - String domainName = "default"; - if (domainURI != null){ - domainName = getDomainName(domainURI); - } - DomainRegistry domainRegistry = domainRegistryFactory.getEndpointRegistry(domainURI, domainName); - return new NodeImpl2(domainName, deployer, compositeActivator, domainRegistry, extensionPointRegistry, null); - } - /** * Creates a Node from an XML configuration file * @param configURL the URL to the XML configuration file @@ -166,9 +160,14 @@ public class TuscanyRuntime { */ public Node createNodeFromXML(String configURL) throws ContributionReadException, ActivationException, ValidationException { NodeConfiguration configuration = loadConfiguration(configURL); - Node node = createNode(configuration.getDomainURI()); + NodeImpl node = (NodeImpl)createNode(configuration.getDomainURI()); for ( ContributionConfiguration c : configuration.getContributions()) { - node.installContribution(c.getURI(), c.getLocation(), c.getMetaDataURL(), c.getDependentContributionURIs(), c.isStartDeployables()); + String curi = node.installContribution(c.getURI(), c.getLocation(), c.getMetaDataURL(), c.getDependentContributionURIs()); + if (c.isStartDeployables()) { + for (String compURI : node.getDeployableCompositeURIs(curi)) { + node.startComposite(curi, compURI); + } + } } return node; } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java index a8b7cac8f3..bc5a1961ec 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java @@ -19,63 +19,41 @@ package org.apache.tuscany.sca.impl; -import java.io.ByteArrayOutputStream; -import java.io.File; import java.io.Reader; +import java.io.StringReader; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import javax.xml.namespace.QName; -import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; import org.apache.tuscany.sca.Node; import org.apache.tuscany.sca.TuscanyRuntime; import org.apache.tuscany.sca.assembly.AssemblyFactory; import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.assembly.Component; -import org.apache.tuscany.sca.assembly.ComponentReference; -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.assembly.EndpointReference; -import org.apache.tuscany.sca.assembly.Multiplicity; -import org.apache.tuscany.sca.assembly.Service; +import org.apache.tuscany.sca.assembly.xml.Utils; import org.apache.tuscany.sca.common.java.io.IOHelper; -import org.apache.tuscany.sca.context.CompositeContext; -import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; import org.apache.tuscany.sca.contribution.ContributionMetadata; +import org.apache.tuscany.sca.contribution.Import; +import org.apache.tuscany.sca.contribution.java.JavaImport; +import org.apache.tuscany.sca.contribution.namespace.NamespaceImport; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint; import org.apache.tuscany.sca.deployment.Deployer; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.ValidationException; import org.apache.tuscany.sca.runtime.ActivationException; import org.apache.tuscany.sca.runtime.CompositeActivator; +import org.apache.tuscany.sca.runtime.ContributionListener; import org.apache.tuscany.sca.runtime.DomainRegistry; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; +import org.apache.tuscany.sca.runtime.InstalledContribution; import org.oasisopen.sca.NoSuchServiceException; -import org.oasisopen.sca.ServiceRuntimeException; public class NodeImpl implements Node { @@ -85,179 +63,204 @@ public class NodeImpl implements Node { private DomainRegistry domainRegistry; private ExtensionPointRegistry extensionPointRegistry; private TuscanyRuntime tuscanyRuntime; - private Map locallyInstalledContributions = new HashMap(); - public NodeImpl(String domainName, Deployer deployer, CompositeActivator compositeActivator, DomainRegistry domainRegistry, ExtensionPointRegistry extensionPointRegistry, TuscanyRuntime tuscanyRuntime) { + private Map loadedContributions = new ConcurrentHashMap(); + + private Map startedComposites = new HashMap(); + private Map stoppedComposites = new HashMap(); + + public NodeImpl(String domainName, + Deployer deployer, + CompositeActivator compositeActivator, + DomainRegistry domainRegistry, + ExtensionPointRegistry extensionPointRegistry, + TuscanyRuntime tuscanyRuntime) { this.domainName = domainName; this.deployer = deployer; this.compositeActivator = compositeActivator; this.domainRegistry = domainRegistry; this.extensionPointRegistry = extensionPointRegistry; this.tuscanyRuntime = tuscanyRuntime; + + domainRegistry.addContributionListener(new ContributionListener() { + public void contributionUpdated(String uri) { + loadedContributions.remove(uri); + } + public void contributionRemoved(String uri) { + loadedContributions.remove(uri); + } + }); } public String installContribution(String contributionURL) throws ContributionReadException, ActivationException, ValidationException { - return installContribution(null, contributionURL, null, null, true); + return installContribution(null, contributionURL, null, null); } - public String installContribution(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ActivationException, ValidationException { - // TODO: sort out deployables and exports - org.apache.tuscany.sca.runtime.InstalledContribution ic = new org.apache.tuscany.sca.runtime.InstalledContribution(uri, contributionURL); + public String installContribution(String uri, String contributionURL) throws ContributionReadException, ActivationException, ValidationException { + return installContribution(uri, contributionURL, null, null); + } + + public String installContribution(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs) throws ContributionReadException, ActivationException, ValidationException { + InstalledContribution ic = new InstalledContribution(uri, contributionURL); + + if (dependentContributionURIs != null) { + ic.getDependentContributionURIs().addAll(dependentContributionURIs); + } + + if (metaDataURL != null) { + mergeContributionMetaData(metaDataURL, loadContribution(ic)); + } + peekIntoContribution(ic); + domainRegistry.installContribution(ic); - if (startDeployables) { - for (String compositeURI : ic.getDeployables()) { - start(ic.getURI(), compositeURI); - } - // TODO: sort out metadata and dependents in distributed - localInstall(ic.getURI(), contributionURL, metaDataURL, dependentContributionURIs, startDeployables); - } + return ic.getURI(); } - + + public void installContribution(Contribution contribution, List dependentContributionURIs) { + InstalledContribution ic = new InstalledContribution(contribution.getURI(), contribution.getLocation()); + if (dependentContributionURIs != null) { + ic.getDependentContributionURIs().addAll(dependentContributionURIs); + } + ic.configureMetaData(contribution); + domainRegistry.installContribution(ic); + loadedContributions.put(ic.getURI(), contribution); + } + + public void uninstallContribution(String contributionURI) { + domainRegistry.uninstallContribution(contributionURI); + } + + protected void mergeContributionMetaData(String metaDataURL, Contribution contribution) throws ValidationException { + ContributionMetadata metaData; + Monitor monitor = deployer.createMonitor(); + try { + metaData = deployer.loadXMLDocument(IOHelper.getLocationAsURL(metaDataURL), monitor); + } catch (Exception e) { + throw new ValidationException(e); + } + monitor.analyzeProblems(); + contribution.mergeMetaData(metaData); + } + /** + * Peek into the contribution to find its attributes. * ASM12032 and ASM12033 say no error checking should be done during install and that should happen later, but - * we would still like to know about deployables and exports so peek into the contribution to try to get those, + * we need to know about deployables and exports so peek into the contribution to try to get those, * and just ignore any errors they might happen while doing that. */ - protected void peekIntoContribution(org.apache.tuscany.sca.runtime.InstalledContribution ic) { + protected void peekIntoContribution(InstalledContribution ic) { Contribution contribution = null; try { - contribution = deployer.loadContribution(IOHelper.createURI(ic.getURI()), IOHelper.getLocationAsURL(ic.getURI()), deployer.createMonitor()); + contribution = loadContribution(ic); } catch (Exception e) { - // ignore any errors + // ignore it } + if (contribution != null) { - for (Composite composite : contribution.getDeployables()) { - ic.getDeployables().add(composite.getURI()); - } - // TODO: need to sort out if Export or xml goes in the reg -// for (Export e : contribution.getExports()) { -// } + ic.configureMetaData(contribution); } } + + public List getInstalledContributionURIs() { + return new ArrayList(domainRegistry.getInstalledContributionURIs()); + } - private void localInstall(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ValidationException, ActivationException { - Monitor monitor = deployer.createMonitor(); - Contribution contribution = deployer.loadContribution(IOHelper.createURI(uri), IOHelper.getLocationAsURL(contributionURL), monitor); - monitor.analyzeProblems(); - if (metaDataURL != null) { - mergeContributionMetaData(metaDataURL, contribution); - } - installContribution(contribution, dependentContributionURIs, startDeployables); + public Contribution getContribution(String contributionURI) throws ContributionReadException, ValidationException { + return loadContribution(getInstalledContribution(contributionURI)); } - private void mergeContributionMetaData(String metaDataURL, Contribution contribution) throws ValidationException { - ContributionMetadata metaData; - Monitor monitor = deployer.createMonitor(); - try { - metaData = deployer.loadXMLDocument(IOHelper.getLocationAsURL(metaDataURL), monitor); - } catch (Exception e) { - throw new ValidationException(e); - } - monitor.analyzeProblems(); - contribution.mergeMetaData(metaData); + public List getDeployableCompositeURIs(String contributionURI) { + InstalledContribution ic = domainRegistry.getInstalledContribution(contributionURI); + return new ArrayList(ic.getDeployables()); } - public String installContribution(Contribution contribution, List dependentContributionURIs, boolean startDeployables) throws ContributionReadException, ActivationException, ValidationException { - InstalledContribution ic = new InstalledContribution(contribution.getURI(), contribution.getLocation(), contribution, dependentContributionURIs); - locallyInstalledContributions.put(contribution.getURI(), ic); - if (startDeployables) { - for (Composite c : ic.getDefaultDeployables()) { - startComposite(c, ic); - } - } else { - contribution.getDeployables().clear(); - - List dependentContributions = calculateDependentContributions(ic); + public String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ValidationException { + InstalledContribution ic = getInstalledContribution(contributionURI); + + // load it to check its valid composite XML + Composite composite = deployer.loadXMLDocument(compositeXML); + + return addDeploymentComposite(ic, composite); + } - Monitor monitor = deployer.createMonitor(); - try { - deployer.resolve(contribution, dependentContributions, monitor); - } catch (Exception e) { - throw new RuntimeException(e); - } - monitor.analyzeProblems(); - } - return ic.getURI(); + public String addDeploymentComposite(String contributionURI, Composite composite) { + InstalledContribution ic = getInstalledContribution(contributionURI); + return addDeploymentComposite(ic, composite); } - protected List calculateDependentContributions(InstalledContribution ic) { - List dependentContributions = new ArrayList(); - if (ic.getDependentContributionURIs() != null) { - // if the install specified dependent uris use just those contributions - for (String uri : ic.getDependentContributionURIs()) { - InstalledContribution dependee = locallyInstalledContributions.get(uri); - if (dependee != null) { - dependentContributions.add(dependee.getContribution()); - } - } - } else { - // otherwise use all available contributions for dependents - for (InstalledContribution ics : locallyInstalledContributions.values()) { - dependentContributions.add(ics.getContribution()); - } + protected String addDeploymentComposite(InstalledContribution ic, Composite composite) { + if (composite.getURI() == null || composite.getURI().length() < 1) { + composite.setURI(composite.getName().getLocalPart() + ".composite"); } - return dependentContributions; + ic.getAdditionalDeployables().put(composite.getURI(), Utils.modelToXML(composite, false, extensionPointRegistry)); + domainRegistry.updateInstalledContribution(ic); + return composite.getURI(); } - public String start(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException { - Monitor monitor = deployer.createMonitor(); - Composite composite = deployer.loadXMLDocument(compositeXML, monitor); - monitor.analyzeProblems(); - return start(contributionURI, composite); - } + public void validateContribution(String contributionURI) throws ContributionReadException, ValidationException { + InstalledContribution ic = getInstalledContribution(contributionURI); + Contribution contribution = loadContribution(ic); - public String start(String contributionURI, Composite composite) throws ActivationException, ValidationException { - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic == null) { - throw new IllegalArgumentException("contribution not installed: " + contributionURI); + Monitor monitor = deployer.createMonitor(); + try { + deployer.resolve(contribution, calculateDependentContributions(ic), monitor); + } catch (Exception e) { + loadedContributions.remove(ic.getURI()); + throw new RuntimeException(e); + } + try { + monitor.analyzeProblems(); + } catch (ValidationException e) { + loadedContributions.remove(ic.getURI()); + throw e; } - String compositeArtifcatURI = deployer.attachDeploymentComposite(ic.getContribution(), composite, true); - startComposite(composite, ic); - return compositeArtifcatURI; + } + + public Map> getStartedComposites() { + return domainRegistry.getRunningCompositeNames(); } - public void start(String contributionURI, String compositeURI) throws ActivationException, ValidationException, ContributionReadException { - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic == null) { - - org.apache.tuscany.sca.runtime.InstalledContribution icx = domainRegistry.getInstalledContribution(contributionURI); - String url = null; - if (icx != null) { - url = icx.getURL(); - } - if (url == null) { - throw new IllegalArgumentException("Contribution not installed: " + contributionURI); - } - localInstall(contributionURI, url, null, null, false); - ic = locallyInstalledContributions.get(contributionURI); + public void startComposite(String contributionURI, String compositeURI) throws ActivationException, ValidationException, ContributionReadException { + String key = contributionURI+"/"+compositeURI; + if (startedComposites.containsKey(key)) { + throw new IllegalStateException("composite already started: " + compositeURI); } - if (!ic.restart(compositeURI)) { - for (Artifact a : ic.getContribution().getArtifacts()) { - if (a.getURI().equals(compositeURI)) { - startComposite((Composite) a.getModel(), ic); - return; - } - } - throw new IllegalArgumentException("composite not found: " + compositeURI); + DeployedComposite dc = stoppedComposites.remove(key); + if (dc != null) { + dc.start(); + startedComposites.put(key, dc); + } else { + InstalledContribution ic = getInstalledContribution(contributionURI); + Contribution contribution = loadContribution(ic); + Composite composite = contribution.getArtifactModel(compositeURI); + List dependentContributions = calculateDependentContributions(ic); + dc = new DeployedComposite(composite, contribution, dependentContributions, deployer, compositeActivator, domainRegistry, extensionPointRegistry); + dc.start(); + startedComposites.put(key, dc); } } - - @Override - public void stop(String contributionURI, String compositeURI) throws ActivationException { - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic == null) { - throw new IllegalArgumentException("Contribution not installed: " + contributionURI); + + public void stopComposite(String contributionURI, String compositeURI) throws ActivationException { + String key = contributionURI+"/"+compositeURI; + DeployedComposite dc = startedComposites.remove(key); + if (dc == null) { + throw new IllegalStateException("composite not started: " + compositeURI); } - ic.stop(compositeURI); + dc.stop(); + stoppedComposites.put(key, dc); } - public Composite getDomainLevelComposite() { + public String getDomainName() { + return domainName; + } + + public Composite getDomainComposite() { FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class); AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class); Composite domainComposite = assemblyFactory.createComposite(); - domainComposite.setName(new QName(Base.SCA11_TUSCANY_NS, "domainComposite")); + domainComposite.setName(new QName(Base.SCA11_TUSCANY_NS, domainName)); domainComposite.setAutowire(false); domainComposite.setLocal(false); List domainIncludes = domainComposite.getIncludes(); @@ -270,292 +273,113 @@ public class NodeImpl implements Node { return domainComposite; } - public String getDomainLevelCompositeAsString() { - StAXArtifactProcessorExtensionPoint xmlProcessors = extensionPointRegistry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - StAXArtifactProcessor compositeProcessor = xmlProcessors.getProcessor(Composite.class); - XMLOutputFactory outputFactory = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(XMLOutputFactory.class); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try { - XMLStreamWriter sw = outputFactory.createXMLStreamWriter(bos); - compositeProcessor.write(getDomainLevelComposite(), sw, new ProcessorContext(extensionPointRegistry)); - sw.close(); - } catch(Exception e) { - throw new RuntimeException(e); - } - - return bos.toString(); - } - public Object getQNameDefinition(String contributionURI, QName definition, QName symbolSpace) { - // TODO Auto-generated method stub - return null; + public T getService(Class interfaze, String serviceURI) throws NoSuchServiceException { + return ServiceHelper.getService(interfaze, serviceURI, domainRegistry, extensionPointRegistry, deployer); } - - public List removeContribution(String contributionURI) throws ActivationException { - domainRegistry.uninstallContribution(contributionURI); - - // TODO: should this next bit happen? - List removedContributionURIs = new ArrayList(); - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic != null) { - removedContributionURIs.add(ic.getURI()); - for (String dependent : getDependentContributions(contributionURI)) { - removedContributionURIs.addAll(removeContribution(dependent)); - } - locallyInstalledContributions.remove(contributionURI); - for (String compositeURI : ic.getStartedCompositeURIs()) { - ic.stop(compositeURI); - } + + protected InstalledContribution getInstalledContribution(String contributionURI) { + InstalledContribution ic = domainRegistry.getInstalledContribution(contributionURI); + if (ic == null) { + throw new IllegalArgumentException("Contribution not installed: " + contributionURI); } - return removedContributionURIs; + return ic; } - public void updateContribution(String uri, String contributionURL) { - // TODO Auto-generated method stub - // is this just removeContribution/installContribution? - } - public void updateContribution(Contribution contribution) { - // TODO Auto-generated method stub - } - - public String updateDeploymentComposite(String uri, Reader compositeXML) { - // TODO Auto-generated method stub - // is this removeFromDomainLevelComposite/addDeploymentComposite - return null; - } - public String updateDeploymentComposite(String uri, Composite composite) { - // TODO Auto-generated method stub - return null; - } - - public void stop() { - ArrayList ics = new ArrayList(locallyInstalledContributions.keySet()); - for (String uri : ics) { - try { - removeContribution(uri); - } catch (Exception e) { - // TODO: log - e.printStackTrace(); + protected Contribution loadContribution(InstalledContribution ic) throws ContributionReadException, ValidationException { + Contribution contribution = loadedContributions.get(ic.getURI()); + if (contribution == null) { + Monitor monitor = deployer.createMonitor(); + contribution = deployer.loadContribution(IOHelper.createURI(ic.getURI()), IOHelper.getLocationAsURL(ic.getURL()), monitor); + monitor.analyzeProblems(); + if (ic.getAdditionalDeployables().size() > 0) { + for (String uri : ic.getAdditionalDeployables().keySet()) { + String compositeXML = ic.getAdditionalDeployables().get(uri); + Composite composite; + try { + composite = deployer.loadXMLDocument(new StringReader(compositeXML)); + } catch (XMLStreamException e) { + throw new ContributionReadException(e); + } + composite.setURI(composite.getName().getLocalPart() + ".composite"); + contribution.addComposite(composite); + } } + loadedContributions.put(ic.getURI(), contribution); } - if (tuscanyRuntime != null) { - tuscanyRuntime.stop(); - } + return contribution; } - public T getService(Class interfaze, String serviceURI) throws NoSuchServiceException { - - List endpoints = domainRegistry.findEndpoint(serviceURI); - if (endpoints.size() < 1) { - throw new NoSuchServiceException(serviceURI); - } - - String serviceName = null; - if (serviceURI.contains("/")) { - int i = serviceURI.indexOf("/"); - if (i < serviceURI.length() - 1) { - serviceName = serviceURI.substring(i + 1); + protected List calculateDependentContributions(InstalledContribution ic) throws ContributionReadException, ValidationException { + List dependentContributions = new ArrayList(); + if (ic.getDependentContributionURIs() != null && ic.getDependentContributionURIs().size() > 0) { + // if the install specified dependent uris use just those contributions + for (String uri : ic.getDependentContributionURIs()) { + InstalledContribution dependee = domainRegistry.getInstalledContribution(uri); + if (dependee != null) { + dependentContributions.add(loadContribution(dependee)); + } } - } - - Endpoint ep = endpoints.get(0); - if (((RuntimeComponent)ep.getComponent()).getComponentContext() != null) { - return ((RuntimeComponent)ep.getComponent()).getServiceReference(interfaze, serviceName).getService(); } else { - return getRemoteProxy(interfaze, ep); - } - } - - private T getRemoteProxy(Class serviceInterface, Endpoint endpoint) throws NoSuchServiceException { - FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class); - AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class); - JavaInterfaceFactory javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class); - ProxyFactory proxyFactory = - new ExtensibleProxyFactory(extensionPointRegistry.getExtensionPoint(ProxyFactoryExtensionPoint.class)); - - CompositeContext compositeContext = - new CompositeContext(extensionPointRegistry, domainRegistry, null, null, null, - deployer.getSystemDefinitions()); - - RuntimeEndpointReference epr; - try { - epr = - createEndpointReference(javaInterfaceFactory, - compositeContext, - assemblyFactory, - endpoint, - serviceInterface); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - - return proxyFactory.createProxy(serviceInterface, epr); - } - - private RuntimeEndpointReference createEndpointReference(JavaInterfaceFactory javaInterfaceFactory, - CompositeContext compositeContext, - AssemblyFactory assemblyFactory, - Endpoint endpoint, - Class businessInterface) - throws CloneNotSupportedException, InvalidInterfaceException { - Component component = endpoint.getComponent(); - ComponentService service = endpoint.getService(); - ComponentReference componentReference = assemblyFactory.createComponentReference(); - componentReference.setName("sca.client." + service.getName()); - - componentReference.setCallback(service.getCallback()); - componentReference.getTargets().add(service); - componentReference.getPolicySets().addAll(service.getPolicySets()); - componentReference.getRequiredIntents().addAll(service.getRequiredIntents()); - componentReference.getBindings().add(endpoint.getBinding()); - - InterfaceContract interfaceContract = service.getInterfaceContract(); - Service componentTypeService = service.getService(); - if (componentTypeService != null && componentTypeService.getInterfaceContract() != null) { - interfaceContract = componentTypeService.getInterfaceContract(); - } - interfaceContract = getInterfaceContract(javaInterfaceFactory, interfaceContract, businessInterface); - componentReference.setInterfaceContract(interfaceContract); - componentReference.setMultiplicity(Multiplicity.ONE_ONE); - // component.getReferences().add(componentReference); - - // create endpoint reference - EndpointReference endpointReference = assemblyFactory.createEndpointReference(); - endpointReference.setComponent(component); - endpointReference.setReference(componentReference); - endpointReference.setBinding(endpoint.getBinding()); - endpointReference.setUnresolved(false); - endpointReference.setStatus(EndpointReference.Status.WIRED_TARGET_FOUND_AND_MATCHED); - - endpointReference.setTargetEndpoint(endpoint); - - componentReference.getEndpointReferences().add(endpointReference); - ((RuntimeComponentReference)componentReference).setComponent((RuntimeComponent)component); - ((RuntimeEndpointReference)endpointReference).bind(compositeContext); - - return (RuntimeEndpointReference)endpointReference; - } - - private InterfaceContract getInterfaceContract(JavaInterfaceFactory javaInterfaceFactory, - InterfaceContract interfaceContract, - Class businessInterface) throws CloneNotSupportedException, - InvalidInterfaceException { - if (businessInterface == null) { - return interfaceContract; - } - boolean compatible = false; - if (interfaceContract != null && interfaceContract.getInterface() != null) { - Interface interfaze = interfaceContract.getInterface(); - if (interfaze instanceof JavaInterface) { - Class cls = ((JavaInterface)interfaze).getJavaClass(); - if (cls != null && businessInterface.isAssignableFrom(cls)) { - compatible = true; + for (Import imprt : loadContribution(ic).getImports()) { + for (InstalledContribution exportingIC : findExportingContributions(imprt)) { + dependentContributions.add(loadContribution(exportingIC)); } } } - - if (!compatible) { - // The interface is not assignable from the interface contract - interfaceContract = javaInterfaceFactory.createJavaInterfaceContract(); - JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(businessInterface); - interfaceContract.setInterface(callInterface); - if (callInterface.getCallbackClass() != null) { - interfaceContract.setCallbackInterface(javaInterfaceFactory.createJavaInterface(callInterface - .getCallbackClass())); - } - } - - return interfaceContract; - } - - public String getDomainName() { - return domainName; + // TODO: there is also the location attribute on the import which should be taken into account + return dependentContributions; } - public List getStartedCompositeURIs(String contributionURI) { - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic == null) { - throw new IllegalArgumentException("no contribution found for: " + contributionURI); + private List findExportingContributions(Import imprt) { + List ics = new ArrayList(); + // TODO: Handle Imports in a more extensible way + for (String curi : domainRegistry.getInstalledContributionURIs()) { + InstalledContribution ic = domainRegistry.getInstalledContribution(curi); + if (imprt instanceof JavaImport) { + for (String s : ic.getJavaExports()) { + if (s.startsWith(((JavaImport)imprt).getPackage())) { + ics.add(ic); + } + } + } else if (imprt instanceof NamespaceImport) { + if (ic.getNamespaceExports().contains(((NamespaceImport)imprt).getNamespace())) { + ics.add(ic); + } + } } - return ic.getStartedCompositeURIs(); + return ics; } - - public List getInstalledContributionURIs() { - Set ls = new HashSet(domainRegistry.getInstalledContributionURIs()); - ls.addAll(locallyInstalledContributions.keySet()); - return new ArrayList(ls); - } - - public Contribution getInstalledContribution(String uri) { - if (locallyInstalledContributions.containsKey(uri)) { - return locallyInstalledContributions.get(uri).getContribution(); - } - throw new IllegalArgumentException("no contribution found for: " + uri); + + @Override + public Object getQNameDefinition(String contributionURI, QName definition, QName symbolSpace) { + // TODO Auto-generated method stub + return null; } - protected String getContributionUriForArtifact(String artifactURI) { - String contributionURI = null; - for (String uri : locallyInstalledContributions.keySet()) { - if (artifactURI.startsWith(uri)) { - contributionURI = uri; - break; - } - } - if (contributionURI == null) { - throw new IllegalArgumentException("no contribution found for: " + artifactURI); + @Override + public List startDeployables(String contributionURI) throws ActivationException, ValidationException, ContributionReadException { + List dcURIs = getDeployableCompositeURIs(contributionURI); + for (String dcURI : dcURIs) { + startComposite(contributionURI, dcURI); } - return contributionURI; + return dcURIs; } - protected void startComposite(Composite c, InstalledContribution ic) throws ActivationException, ValidationException { - List dependentContributions = calculateDependentContributions(ic); - DeployedComposite dc = new DeployedComposite(c, ic.getContribution(), dependentContributions, deployer, compositeActivator, domainRegistry, extensionPointRegistry); - ic.start(dc); + // TODO: this is used by the shell to endpoint detail, should it be on the Node interface? + public DomainRegistry getEndpointRegistry() { + return domainRegistry; } - public Set getDependentContributions(String contributionURI) { - InstalledContribution ic = locallyInstalledContributions.get(contributionURI); - if (ic == null) { - throw new IllegalArgumentException("Contribution not installed: " + contributionURI); - } - Set dependentContributionURIs = new HashSet(); - for (InstalledContribution icx : locallyInstalledContributions.values()) { - if (ic != icx) { - List dependencies = icx.getContribution().getDependencies(); - if (dependencies != null && dependencies.contains(ic.getContribution())) { - dependentContributionURIs.addAll(getDependentContributions(icx.getURI())); - } - } - } - return dependentContributionURIs; - } - - /** - * Returns a default URI for a contribution based on the contribution URL - */ - protected String getDefaultContributionURI(String contributionURL) { - String uri = null; - try { - File f = new File(contributionURL); - if ("classes".equals(f.getName()) && "target".equals(f.getParentFile().getName())) { - uri = f.getParentFile().getParentFile().getName(); - } else { - uri = f.getName(); + public void stop() { + for (DeployedComposite dc : startedComposites.values()) { + try { + dc.stop(); + } catch (ActivationException e) { } - } catch (Exception e) { - // ignore } - if (uri == null) { - uri = contributionURL; - } - if (uri.endsWith(".zip") || uri.endsWith(".jar")) { - uri = uri.substring(0, uri.length()-4); - } - return uri; + startedComposites.clear(); + startedComposites.clear(); + } - public DomainRegistry getEndpointRegistry() { - return domainRegistry; - } - } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl2.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl2.java deleted file mode 100644 index e133a3d671..0000000000 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl2.java +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.impl; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; - -import org.apache.tuscany.sca.TuscanyRuntime; -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.common.java.io.IOHelper; -import org.apache.tuscany.sca.common.xml.stax.StAXHelper; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.ContributionMetadata; -import org.apache.tuscany.sca.contribution.Export; -import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.java.JavaExport; -import org.apache.tuscany.sca.contribution.java.JavaImport; -import org.apache.tuscany.sca.contribution.namespace.NamespaceExport; -import org.apache.tuscany.sca.contribution.namespace.NamespaceImport; -import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; -import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -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.runtime.ActivationException; -import org.apache.tuscany.sca.runtime.CompositeActivator; -import org.apache.tuscany.sca.runtime.ContributionListener; -import org.apache.tuscany.sca.runtime.DomainRegistry; -import org.apache.tuscany.sca.runtime.InstalledContribution; -import org.oasisopen.sca.NoSuchServiceException; - -public class NodeImpl2 { - - private String domainName; - private Deployer deployer; - private CompositeActivator compositeActivator; - private DomainRegistry domainRegistry; - private ExtensionPointRegistry extensionPointRegistry; - private TuscanyRuntime tuscanyRuntime; - - private Map loadedContributions = new ConcurrentHashMap(); - - private Map startedComposites = new HashMap(); - private Map stoppedComposites = new HashMap(); - - public NodeImpl2(String domainName, - Deployer deployer, - CompositeActivator compositeActivator, - DomainRegistry domainRegistry, - ExtensionPointRegistry extensionPointRegistry, - TuscanyRuntime tuscanyRuntime) { - this.domainName = domainName; - this.deployer = deployer; - this.compositeActivator = compositeActivator; - this.domainRegistry = domainRegistry; - this.extensionPointRegistry = extensionPointRegistry; - this.tuscanyRuntime = tuscanyRuntime; - - domainRegistry.addContributionListener(new ContributionListener() { - public void contributionUpdated(String uri) { - loadedContributions.remove(uri); - } - public void contributionRemoved(String uri) { - loadedContributions.remove(uri); - } - }); - } - - public String installContribution(String contributionURL) throws ContributionReadException, ActivationException, ValidationException { - return installContribution(null, contributionURL, null, null); - } - - public String installContribution(String uri, String contributionURL) throws ContributionReadException, ActivationException, ValidationException { - return installContribution(uri, contributionURL, null, null); - } - - public String installContribution(String uri, String contributionURL, String metaDataURL, List dependentContributionURIs) throws ContributionReadException, ActivationException, ValidationException { - InstalledContribution ic = new InstalledContribution(uri, contributionURL); - - if (dependentContributionURIs != null) { - ic.getDependentContributionURIs().addAll(dependentContributionURIs); - } - - if (metaDataURL != null) { - mergeContributionMetaData(metaDataURL, loadContribution(ic)); - } - - peekIntoContribution(ic); - - domainRegistry.installContribution(ic); - - return ic.getURI(); - } - - public void uninstallContribution(String contributionURI) { - domainRegistry.uninstallContribution(contributionURI); - } - - protected void mergeContributionMetaData(String metaDataURL, Contribution contribution) throws ValidationException { - ContributionMetadata metaData; - Monitor monitor = deployer.createMonitor(); - try { - metaData = deployer.loadXMLDocument(IOHelper.getLocationAsURL(metaDataURL), monitor); - } catch (Exception e) { - throw new ValidationException(e); - } - monitor.analyzeProblems(); - contribution.mergeMetaData(metaData); - } - - /** - * Peek into the contribution to find its attributes. - * ASM12032 and ASM12033 say no error checking should be done during install and that should happen later, but - * we need to know about deployables and exports so peek into the contribution to try to get those, - * and just ignore any errors they might happen while doing that. - */ - protected void peekIntoContribution(InstalledContribution ic) { - Contribution contribution = null; - try { - contribution = loadContribution(ic); - } catch (Exception e) { - // ignore it - } - - if (contribution != null) { - - // deployables - if (contribution.getDeployables() != null) { - for (Composite composite : contribution.getDeployables()) { - ic.getDeployables().add(composite.getURI()); - } - } - - // Exports - if (contribution.getExports() != null) { - for (Export export : contribution.getExports()) { - // TODO: Handle these and others in a more extensible way - if (export instanceof JavaExport) { - ic.getJavaExports().add(((JavaExport)export).getPackage()); - } else if (export instanceof NamespaceExport) { - ic.getNamespaceExports().add(((NamespaceExport)export).getNamespace()); - } - } - } - - // Imports - if (contribution.getImports() != null) { - for (Import imprt : contribution.getImports()) { - // TODO: Handle these and others in a more extensible way - if (imprt instanceof JavaImport) { - ic.getJavaImports().add(((JavaImport)imprt).getPackage()); - } else if (imprt instanceof NamespaceImport) { - ic.getNamespaceImports().add(((NamespaceImport)imprt).getNamespace()); - } - } - } - } - } - - public List getInstalledContributionURIs() { - return new ArrayList(domainRegistry.getInstalledContributionURIs()); - } - - public Contribution getContribution(String contributionURI) throws ContributionReadException, ValidationException { - return loadContribution(getInstalledContribution(contributionURI)); - } - - public List getDeployableCompositeURIs(String contributionURI) { - InstalledContribution ic = domainRegistry.getInstalledContribution(contributionURI); - return new ArrayList(ic.getDeployables()); - } - - public String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ValidationException { - InstalledContribution ic = getInstalledContribution(contributionURI); - - // load it to check its valid composite XML - Composite composite = deployer.loadXMLDocument(compositeXML); - - return addDeploymentComposite(ic, composite); - } - - public String addDeploymentComposite(String contributionURI, Composite composite) { - InstalledContribution ic = getInstalledContribution(contributionURI); - return addDeploymentComposite(ic, composite); - } - - protected String addDeploymentComposite(InstalledContribution ic, Composite composite) { - if (composite.getURI() == null || composite.getURI().length() < 1) { - composite.setURI(composite.getName().getLocalPart() + ".composite"); - } - ic.getAdditionalDeployables().put(composite.getURI(), compositeToXML(composite)); - domainRegistry.updateInstalledContribution(ic); - return composite.getURI(); - } - - public void validateContribution(String contributionURI) throws ContributionReadException, ValidationException { - InstalledContribution ic = getInstalledContribution(contributionURI); - Contribution contribution = loadContribution(ic); - - Monitor monitor = deployer.createMonitor(); - try { - deployer.resolve(contribution, calculateDependentContributions(ic), monitor); - } catch (Exception e) { - loadedContributions.remove(ic.getURI()); - throw new RuntimeException(e); - } - try { - monitor.analyzeProblems(); - } catch (ValidationException e) { - loadedContributions.remove(ic.getURI()); - throw e; - } - } - - public Map> getStartedComposites() { - return domainRegistry.getRunningCompositeNames(); - } - - public void startComposite(String contributionURI, String compositeURI) throws ActivationException, ValidationException, ContributionReadException { - String key = contributionURI+"/"+compositeURI; - if (startedComposites.containsKey(key)) { - throw new IllegalStateException("composite already started: " + compositeURI); - } - DeployedComposite dc = stoppedComposites.remove(key); - if (dc != null) { - dc.start(); - startedComposites.put(key, dc); - } else { - InstalledContribution ic = getInstalledContribution(contributionURI); - Contribution contribution = loadContribution(ic); - Composite composite = contribution.getArtifactModel(compositeURI); - List dependentContributions = calculateDependentContributions(ic); - dc = new DeployedComposite(composite, contribution, dependentContributions, deployer, compositeActivator, domainRegistry, extensionPointRegistry); - dc.start(); - startedComposites.put(key, dc); - } - } - - public void stopComposite(String contributionURI, String compositeURI) throws ActivationException { - String key = contributionURI+"/"+compositeURI; - DeployedComposite dc = startedComposites.remove(key); - if (dc == null) { - throw new IllegalStateException("composite not started: " + compositeURI); - } - dc.stop(); - stoppedComposites.put(key, dc); - } - - public String getDomainName() { - return domainName; - } - - public Composite getDomainComposite() { - FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class); - AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class); - Composite domainComposite = assemblyFactory.createComposite(); - domainComposite.setName(new QName(Base.SCA11_TUSCANY_NS, domainName)); - domainComposite.setAutowire(false); - domainComposite.setLocal(false); - List domainIncludes = domainComposite.getIncludes(); - Map> runningComposites = domainRegistry.getRunningCompositeNames(); - for (String curi : runningComposites.keySet()) { - for (QName name : runningComposites.get(curi)) { - domainIncludes.add(domainRegistry.getRunningComposite(curi, name)); - } - } - return domainComposite; - } - - public T getService(Class interfaze, String serviceURI) throws NoSuchServiceException { - return ServiceHelper.getService(interfaze, serviceURI, domainRegistry, extensionPointRegistry, deployer); - } - - protected InstalledContribution getInstalledContribution(String contributionURI) { - InstalledContribution ic = domainRegistry.getInstalledContribution(contributionURI); - if (ic == null) { - throw new IllegalArgumentException("Contribution not installed: " + contributionURI); - } - return ic; - } - - protected Contribution loadContribution(InstalledContribution ic) throws ContributionReadException, ValidationException { - Contribution contribution = loadedContributions.get(ic.getURI()); - if (contribution == null) { - Monitor monitor = deployer.createMonitor(); - contribution = deployer.loadContribution(IOHelper.createURI(ic.getURI()), IOHelper.getLocationAsURL(ic.getURL()), monitor); - monitor.analyzeProblems(); - if (ic.getAdditionalDeployables().size() > 0) { - for (String uri : ic.getAdditionalDeployables().keySet()) { - String compositeXML = ic.getAdditionalDeployables().get(uri); - Composite composite; - try { - composite = deployer.loadXMLDocument(new StringReader(compositeXML)); - } catch (XMLStreamException e) { - throw new ContributionReadException(e); - } - composite.setURI(composite.getName().getLocalPart() + ".composite"); - contribution.addComposite(composite); - } - } - loadedContributions.put(ic.getURI(), contribution); - } - return contribution; - } - - protected List calculateDependentContributions(InstalledContribution ic) throws ContributionReadException, ValidationException { - List dependentContributions = new ArrayList(); - if (ic.getDependentContributionURIs() != null && ic.getDependentContributionURIs().size() > 0) { - // if the install specified dependent uris use just those contributions - for (String uri : ic.getDependentContributionURIs()) { - InstalledContribution dependee = domainRegistry.getInstalledContribution(uri); - if (dependee != null) { - dependentContributions.add(loadContribution(dependee)); - } - } - } else { - for (Import imprt : loadContribution(ic).getImports()) { - for (InstalledContribution exportingIC : findExportingContributions(imprt)) { - dependentContributions.add(loadContribution(exportingIC)); - } - } - } - // TODO: there is also the location attribute on the import which should be taken into account - return dependentContributions; - } - - private List findExportingContributions(Import imprt) { - List ics = new ArrayList(); - // TODO: Handle Imports in a more extensible way - for (String curi : domainRegistry.getInstalledContributionURIs()) { - InstalledContribution ic = domainRegistry.getInstalledContribution(curi); - if (imprt instanceof JavaImport) { - for (String s : ic.getJavaExports()) { - if (s.startsWith(((JavaImport)imprt).getPackage())) { - ics.add(ic); - } - } - } else if (imprt instanceof NamespaceImport) { - if (ic.getNamespaceExports().contains(((NamespaceImport)imprt).getNamespace())) { - ics.add(ic); - } - } - } - return ics; - } - - /** - * TODO: this should be somewhere else, perhaps common-xml, and more general to work with any model object - */ - protected String compositeToXML(Composite composite) { - try { - StAXHelper stAXHelper = StAXHelper.getInstance(extensionPointRegistry); - StAXArtifactProcessorExtensionPoint staxProcessors = extensionPointRegistry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, null, stAXHelper.getOutputFactory()); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - staxProcessor.write(composite, bos, new ProcessorContext(extensionPointRegistry)); - bos.close(); - return bos.toString(); - } catch (ContributionWriteException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/impl/Node2TestCase.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/impl/Node2TestCase.java index 34f6b8760e..17963d97c9 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/impl/Node2TestCase.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/impl/Node2TestCase.java @@ -27,6 +27,7 @@ import javax.xml.stream.XMLStreamException; import junit.framework.Assert; +import org.apache.tuscany.sca.Node; import org.apache.tuscany.sca.TuscanyRuntime; import org.apache.tuscany.sca.assembly.Composite; import org.apache.tuscany.sca.contribution.Contribution; @@ -42,7 +43,7 @@ public class Node2TestCase { @Test public void localInstall() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/import.jar"); Assert.assertEquals(1, node.getInstalledContributionURIs().size()); @@ -53,7 +54,7 @@ public class Node2TestCase { @Test public void remoteInstall() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("https://repository.apache.org/content/groups/snapshots/org/apache/tuscany/sca/samples/helloworld/2.0-SNAPSHOT/helloworld-2.0-SNAPSHOT.jar"); Assert.assertEquals(1, node.getInstalledContributionURIs().size()); @@ -64,7 +65,7 @@ public class Node2TestCase { @Test public void DistributedInstall() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 nodeA = TuscanyRuntime.newInstance().createNode2("uri:DistributedInstall"); + Node nodeA = TuscanyRuntime.newInstance().createNode("uri:DistributedInstall"); nodeA.installContribution("https://repository.apache.org/content/groups/snapshots/org/apache/tuscany/sca/samples/helloworld/2.0-SNAPSHOT/helloworld-2.0-SNAPSHOT.jar"); nodeA.installContribution("src/test/resources/export.jar"); @@ -74,21 +75,21 @@ public class Node2TestCase { Contribution cA = nodeA.getContribution("helloworld"); Assert.assertNotNull(cA); - NodeImpl2 nodeB = TuscanyRuntime.newInstance().createNode2("uri:DistributedInstall"); + Node nodeB = TuscanyRuntime.newInstance().createNode("uri:DistributedInstall"); Assert.assertEquals(2, nodeB.getInstalledContributionURIs().size()); Assert.assertTrue(nodeB.getInstalledContributionURIs().contains("export")); Assert.assertTrue(nodeB.getInstalledContributionURIs().contains("helloworld")); Contribution cB = nodeB.getContribution("helloworld"); Assert.assertNotNull(cB); - InstalledContribution ic = nodeB.getInstalledContribution("export"); + InstalledContribution ic = ((NodeImpl)nodeB).getInstalledContribution("export"); Assert.assertEquals(1, ic.getJavaExports().size()); Assert.assertEquals("sample", ic.getJavaExports().get(0)); } @Test public void deployables() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/import.jar"); Assert.assertEquals(1, node.getInstalledContributionURIs().size()); @@ -101,27 +102,27 @@ public class Node2TestCase { @Test public void exports() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/export.jar"); Assert.assertEquals(1, node.getInstalledContributionURIs().size()); Assert.assertEquals("export", node.getInstalledContributionURIs().get(0)); - InstalledContribution ic = node.getInstalledContribution("export"); + InstalledContribution ic = ((NodeImpl)node).getInstalledContribution("export"); Assert.assertEquals(1, ic.getJavaExports().size()); Assert.assertEquals("sample", ic.getJavaExports().get(0)); } @Test public void validValidate() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/sample-helloworld.jar"); node.validateContribution("sample-helloworld"); } @Test public void invalidValidate() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/import.jar"); try { node.validateContribution("import"); @@ -132,7 +133,7 @@ public class Node2TestCase { @Test public void importExportValidate() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/import.jar"); try { node.validateContribution("import"); @@ -148,14 +149,14 @@ public class Node2TestCase { @Test public void importExportDistributedValidate() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 nodeA = TuscanyRuntime.newInstance().createNode2("uri:ImportTestCase"); + Node nodeA = TuscanyRuntime.newInstance().createNode("uri:ImportTestCase"); nodeA.installContribution("src/test/resources/import.jar"); try { nodeA.validateContribution("import"); } catch (ValidationException e) { // expected } - NodeImpl2 nodeB = TuscanyRuntime.newInstance().createNode2("uri:ImportTestCase"); + Node nodeB = TuscanyRuntime.newInstance().createNode("uri:ImportTestCase"); nodeB.installContribution("src/test/resources/export.jar"); nodeA.validateContribution("import"); nodeA.startComposite("import", "helloworld.composite"); @@ -165,7 +166,7 @@ public class Node2TestCase { @Test public void startTest() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("ImportTestCase"); + Node node = TuscanyRuntime.newInstance().createNode("ImportTestCase"); node.installContribution("src/test/resources/sample-helloworld.jar"); Assert.assertEquals(0, node.getStartedComposites().size()); @@ -183,7 +184,7 @@ public class Node2TestCase { @Test public void addDeploymentCompositeTest() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, XMLStreamException { - NodeImpl2 node = TuscanyRuntime.newInstance().createNode2("addDeploymentCompositeTest"); + Node node = TuscanyRuntime.newInstance().createNode("addDeploymentCompositeTest"); String curi = node.installContribution("src/test/resources/sample-helloworld.jar"); String compositeXML = diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java index 12204883f8..8713d0b478 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java @@ -19,10 +19,14 @@ package org.apache.tuscany.sca.runtime; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.net.MalformedURLException; import java.net.URI; import java.util.List; +import java.util.Map; +import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; import junit.framework.Assert; @@ -51,7 +55,7 @@ public class DeployerTestCase { Contribution contribution = deployer.loadContribution(URI.create("foo"), new File("src/test/resources/sample-helloworld-nodeployable.jar").toURI().toURL(), monitor); monitor.analyzeProblems(); - node.installContribution(contribution, null, true); + node.installContribution(contribution, null); List ics = node.getInstalledContributionURIs(); Assert.assertEquals(1, ics.size()); Assert.assertEquals("foo", ics.get(0)); @@ -62,17 +66,31 @@ public class DeployerTestCase { TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance(); Node node = tuscanyRuntime.createNode("myDomain"); - node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true); + node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null); Deployer deployer = tuscanyRuntime.getDeployer(); Monitor monitor = deployer.createMonitor(); Composite composite = deployer.loadXMLDocument(new File("src/test/resources/helloworld2.composite").toURI().toURL(), monitor); monitor.analyzeProblems(); - composite.setURI("helloworld2.composite"); - node.start("foo", composite); - List dcs = node.getStartedCompositeURIs("foo"); + String cmpuri = node.addDeploymentComposite("foo", composite); + node.startComposite("foo", cmpuri); + Map> dcs = node.getStartedComposites(); Assert.assertEquals(1, dcs.size()); - Assert.assertEquals("helloworld2.composite", dcs.get(0)); + Assert.assertEquals("helloworld2", dcs.get("foo").get(0).getLocalPart()); + } + + @Test + public void testAddDeploymentCompositeXML() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException, XMLStreamException, FileNotFoundException { + TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance(); + Node node = tuscanyRuntime.createNode("myDomain"); + + node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null); + + String cmpuri = node.addDeploymentComposite("foo", new FileReader(new File("src/test/resources/helloworld2.composite"))); + node.startComposite("foo", cmpuri); + Map> dcs = node.getStartedComposites(); + Assert.assertEquals(1, dcs.size()); + Assert.assertEquals("helloworld2", dcs.get("foo").get(0).getLocalPart()); } } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java index ce5ba2432c..e4f93ca85d 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java @@ -33,31 +33,32 @@ public class DomainCompositeTestCase { @Test public void localOnlyDomain() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - Node node = TuscanyRuntime.newInstance().createNode("DomainCompositeTestCase.localOnlyDomain"); + Node node = TuscanyRuntime.newInstance().createNode("DomainCompositeTestCase"); testIt(node); } @Test public void distributedDomain() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { - Node node = TuscanyRuntime.newInstance().createNode("uri:DomainCompositeTestCase.distributedDomain"); + Node node = TuscanyRuntime.newInstance().createNode("uri:DomainCompositeTestCase"); testIt(node); } private void testIt(Node node) throws ContributionReadException, ActivationException, ValidationException { - node.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null, true); + node.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null); + node.startComposite("helloworld", "helloworld.composite"); - Composite dc = node.getDomainLevelComposite(); - Assert.assertEquals("domainComposite", dc.getName().getLocalPart()); + Composite dc = node.getDomainComposite(); + Assert.assertEquals("DomainCompositeTestCase", dc.getName().getLocalPart()); Assert.assertEquals(1, dc.getIncludes().size()); Composite c = dc.getIncludes().get(0); Assert.assertEquals("helloworld", c.getName().getLocalPart()); - String s = node.getDomainLevelCompositeAsString(); - System.out.println(s); - Assert.assertTrue(s.contains(":helloworld\"")); +// String s = node.getDomainLevelCompositeAsString(); +// System.out.println(s); +// Assert.assertTrue(s.contains(":helloworld\"")); - node.stop("helloworld", "helloworld.composite"); - Assert.assertEquals(0, node.getDomainLevelComposite().getIncludes().size()); + node.stopComposite("helloworld", "helloworld.composite"); + Assert.assertEquals(0, node.getDomainComposite().getIncludes().size()); } } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java index d245ea2ec6..ca4ea32c4d 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java @@ -19,6 +19,9 @@ package org.apache.tuscany.sca.runtime; import java.util.List; +import java.util.Map; + +import javax.xml.namespace.QName; import junit.framework.Assert; @@ -37,9 +40,9 @@ public class NodeXMLTestCase { List cs = node.getInstalledContributionURIs(); Assert.assertEquals(1, cs.size()); Assert.assertEquals("sample-helloworld", cs.get(0)); - List compsoites = node.getStartedCompositeURIs("sample-helloworld"); - Assert.assertEquals(1, compsoites.size()); - Assert.assertEquals("helloworld.composite", compsoites.get(0)); + Map> startedComposites = node.getStartedComposites(); + Assert.assertEquals(1, startedComposites.size()); + Assert.assertEquals("helloworld", startedComposites.get("sample-helloworld").get(0).getLocalPart()); } } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java index 4b889f56bc..97b3755f2e 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java @@ -39,15 +39,15 @@ public class PerfTest { Properties config = new Properties(); config.setProperty(RuntimeProperties.QUIET_LOGGING, "true"); Node node = TuscanyRuntime.newInstance(config).createNode(); - node.installContribution(null, "src/test/resources/sample-helloworld.jar", null, null, false); + node.installContribution(null, "src/test/resources/sample-helloworld.jar", null, null); validate(node); int count = 3000; long start = System.currentTimeMillis(); for (int i=0; i> ci = node.getStartedComposites(); + Assert.assertEquals(1, ci.size()); Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); - node.stop("helloworld", ci); + node.stopComposite("helloworld", "helloworld.composite"); try { node.getService(Helloworld.class, "HelloworldComponent"); Assert.fail(); @@ -64,7 +71,7 @@ public class TuscanyRuntimeTestCase { // expected as there is no deployables } - node.start("helloworld", ci); + node.startComposite("helloworld", "helloworld.composite"); helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); } @@ -73,8 +80,10 @@ public class TuscanyRuntimeTestCase { @Ignore("Depdends on itest/T3558 which isn't in the build?") public void testInstallWithDependent() throws NoSuchServiceException, ContributionReadException, ActivationException, ValidationException { Node node = TuscanyRuntime.newInstance().createNode("default"); - node.installContribution("store", "../../itest/T3558/src/test/resources/sample-store.jar", null, null, true); - node.installContribution("store-client", "../../itest/T3558/src/test/resources/sample-store-client.jar", null, null, true); + node.installContribution("store", "../../testing/itest/T3558/src/test/resources/sample-store.jar", null, null); + node.installContribution("store-client", "../../testing/itest/T3558/src/test/resources/sample-store-client.jar", null, null); + node.startComposite("store", "store.composite"); + node.startComposite("store-client", "store-client.composite"); Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); @@ -83,7 +92,7 @@ public class TuscanyRuntimeTestCase { @Test public void testInstallNoDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { Node node = TuscanyRuntime.newInstance().createNode("default"); - node.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true); + node.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", null, null); try { node.getService(Helloworld.class, "HelloworldComponent"); @@ -92,7 +101,7 @@ public class TuscanyRuntimeTestCase { // expected as there is no deployables } - node.start("helloworld", "helloworld.composite"); + node.startComposite("helloworld", "helloworld.composite"); Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); } @@ -100,7 +109,7 @@ public class TuscanyRuntimeTestCase { @Test public void testGetInstalledContributions() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { Node node = TuscanyRuntime.newInstance().createNode("default"); - node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true); + node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null); List ics = node.getInstalledContributionURIs(); Assert.assertEquals(1, ics.size()); Assert.assertEquals("foo", ics.get(0)); @@ -109,8 +118,8 @@ public class TuscanyRuntimeTestCase { @Test public void testGetDeployedCompostes() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException { Node node = TuscanyRuntime.newInstance().createNode("default"); - node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null, true); - List dcs = node.getStartedCompositeURIs("foo"); + node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null); + List dcs = node.startDeployables("foo"); Assert.assertEquals(1, dcs.size()); Assert.assertEquals("helloworld.composite", dcs.get(0)); } @@ -118,20 +127,25 @@ public class TuscanyRuntimeTestCase { @Test public void testRemoveComposte() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException { Node node = TuscanyRuntime.newInstance().createNode("default"); - node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null, true); - node.stop("foo", "helloworld.composite"); - List dcs = node.getStartedCompositeURIs("foo"); - Assert.assertEquals(0, dcs.size()); + node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null); + List dcs = node.startDeployables("foo"); + Assert.assertEquals(1, dcs.size()); + Map> dcsx = node.getStartedComposites(); + Assert.assertEquals(1, dcsx.size()); + node.stopComposite("foo", "helloworld.composite"); + dcsx = node.getStartedComposites(); + Assert.assertEquals(0, dcsx.size()); } @Test public void testInstallWithMetaData() throws ContributionReadException, ActivationException, ValidationException, NoSuchServiceException { Node node = TuscanyRuntime.newInstance().createNode("default"); - ((NodeImpl)node).installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", "src/test/resources/sca-contribution-generated.xml", null, true); + node.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", "src/test/resources/sca-contribution-generated.xml", null); + node.startComposite("helloworld", "helloworld.composite"); - List dcs = node.getStartedCompositeURIs("helloworld"); + Map> dcs = node.getStartedComposites(); Assert.assertEquals(1, dcs.size()); - Assert.assertEquals("helloworld.composite", dcs.get(0)); + Assert.assertEquals("helloworld", dcs.get("helloworld").get(0).getLocalPart()); Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); @@ -149,9 +163,9 @@ public class TuscanyRuntimeTestCase { Node node = TuscanyRuntime.runComposite("helloworld.composite", "src/test/resources/sample-helloworld.jar"); List cs = node.getInstalledContributionURIs(); Assert.assertEquals(1, cs.size()); - List dcs = node.getStartedCompositeURIs(cs.get(0)); + Map> dcs = node.getStartedComposites(); Assert.assertEquals(1, dcs.size()); - Assert.assertEquals("helloworld.composite", dcs.get(0)); + Assert.assertEquals("helloworld", dcs.get("sample-helloworld").get(0).getLocalPart()); } @Test @@ -159,29 +173,21 @@ public class TuscanyRuntimeTestCase { Node node = TuscanyRuntime.runComposite(null, "src/test/resources/sample-helloworld.jar"); List cs = node.getInstalledContributionURIs(); Assert.assertEquals(1, cs.size()); - List dcs = node.getStartedCompositeURIs(cs.get(0)); + Map> dcs = node.getStartedComposites(); Assert.assertEquals(1, dcs.size()); - Assert.assertEquals("helloworld.composite", dcs.get(0)); + Assert.assertEquals("helloworld", dcs.get("sample-helloworld").get(0).getLocalPart()); } @Test public void testRunComposite() throws NoSuchServiceException { Node node = TuscanyRuntime.runComposite("helloworld.composite", "src/test/resources/sample-helloworld.jar"); - try { Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); - } finally { - node.stop(); - } } @Test public void testRunCompositeSharedRuntime() throws NoSuchServiceException { Node node = TuscanyRuntime.runComposite(URI.create("default"), "helloworld.composite", "src/test/resources/sample-helloworld.jar"); - try { Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent"); Assert.assertEquals("Hello petra", helloworldService.sayHello("petra")); - } finally { - node.stop(); - } } } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java index 6205b26a8a..4de9215838 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java @@ -35,7 +35,8 @@ public class TwoNodesTestCase { @Test public void testInstallDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException { Node node1 = TuscanyRuntime.newInstance().createNode("uri:TwoNodesTestCase?multicast=off&bind=127.0.0.1:44331"); - node1.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null, true); + node1.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null); + node1.startComposite("helloworld", "helloworld.composite"); Node node2 = TuscanyRuntime.newInstance().createNode("uri:TwoNodesTestCase?multicast=off&bind=127.0.0.1:44332&wka=127.0.0.1:44331"); -- cgit v1.2.3