You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2007/07/01 19:46:03 UTC
svn commit: r552346 - in
/incubator/tuscany/java/sca/samples/calculator-distributed/src:
main/java/calculator/CalculatorNode.java
main/java/calculator/CalculatorNodeExe.java main/resources/runtime.topology
test/java/calculator/CalculatorTestCase.java
Author: slaws
Date: Sun Jul 1 10:46:02 2007
New Revision: 552346
URL: http://svn.apache.org/viewvc?view=rev&rev=552346
Log:
Take account of reorganized distributed domain classes
Modified:
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNode.java
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNodeExe.java
incubator/tuscany/java/sca/samples/calculator-distributed/src/main/resources/runtime.topology
incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorTestCase.java
Modified: incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNode.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNode.java?view=diff&rev=552346&r1=552345&r2=552346
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNode.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNode.java Sun Jul 1 10:46:02 2007
@@ -22,50 +22,30 @@
import java.io.File;
import java.net.URL;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
-import org.apache.tuscany.sca.assembly.xml.ComponentTypeDocumentProcessor;
-import org.apache.tuscany.sca.assembly.xml.ComponentTypeProcessor;
-import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeDocumentProcessor;
+
import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.DefaultURLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
import org.apache.tuscany.sca.contribution.service.ContributionService;
-import org.apache.tuscany.sca.distributed.host.impl.DistributedSCADomain;
-import org.apache.tuscany.sca.distributed.node.ComponentRegistry;
+import org.apache.tuscany.sca.core.runtime.ActivationException;
+import org.apache.tuscany.sca.distributed.host.impl.DistributedSCADomainImpl;
+import org.apache.tuscany.sca.distributed.node.impl.NodeImpl;
import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain;
-import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
-import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
-import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-import org.apache.tuscany.sca.topology.DefaultTopologyFactory;
-import org.apache.tuscany.sca.topology.Node;
-import org.apache.tuscany.sca.topology.TopologyFactory;
-import org.apache.tuscany.sca.topology.xml.TopologyDocumentProcessor;
-import org.apache.tuscany.sca.topology.xml.TopologyProcessor;
/**
* This is an example node implementation that uses the
* distributed runtime to run the calculator sample
* We need to remove some of the function from here and
- * put it in the runtime proper
+ * put it in the runtime proper when we decide how nodes
+ * will be configured remotely. For now the node is hardcoded
+ * to run the calculator sample.
*/
public class CalculatorNode {
- private DistributedSCADomain domain;
+ private NodeImpl node;
+ private DistributedSCADomainImpl domain;
private String domainName;
private String nodeName;
@@ -75,25 +55,24 @@
}
- public SCADomain startDomain()
+ public SCADomain start()
throws Exception {
-
- ClassLoader cl = CalculatorNode.class.getClassLoader();
- domain = new DistributedSCADomain(cl,
- domainName,
- nodeName);
- //Start the domain
- domain.start();
-
- // configure the topology - should be done by file or remotely
- ComponentRegistry componentRegistry =
- domain.getNodeService(ComponentRegistry.class, "ComponentRegistry");
-
- componentRegistry.setComponentNode("CalculatorServiceComponent", "nodeA");
- componentRegistry.setComponentNode("AddServiceComponent", "nodeB");
- componentRegistry.setComponentNode("SubtractServiceComponent", "nodeC");
- componentRegistry.setComponentNode("MultiplyServiceComponent", "nodeA");
- componentRegistry.setComponentNode("DivideServiceComponent", "nodeA");
+ ClassLoader cl = CalculatorNodeExe.class.getClassLoader();
+
+ // create the node implementation. The node implementation
+ // will read the node configuration and then wait until you
+ // contribute assemblies
+ node = new NodeImpl("MyRuntime",
+ nodeName,
+ cl);
+
+ // start the node to load the configuration
+ // and create the intial domains
+ node.start();
+
+ // load an application into a domain
+ // TODO - how are applications really going to be contributed?
+ domain = (DistributedSCADomainImpl)node.getDomain(domainName);
// find the current directory as a URL. This is where our contribution
// will come from
@@ -117,14 +96,15 @@
domain.getDomainCompositeHelper().activateDomain();
// start the components, i.e. bring any exposed services on line
- domain.getDomainCompositeHelper().startComponents();
+ domain.getDomainCompositeHelper().startComponents();
- return domain;
+ return domain;
+
}
- public void stopDomain() {
- //Stop the domain
- domain.close();
+ public void stop() throws ActivationException {
+ //Stop the domains for this node
+ node.stop();
}
}
Modified: incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNodeExe.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNodeExe.java?view=diff&rev=552346&r1=552345&r2=552346
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNodeExe.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-distributed/src/main/java/calculator/CalculatorNodeExe.java Sun Jul 1 10:46:02 2007
@@ -22,26 +22,33 @@
import java.io.IOException;
import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.topology.xml.Constants;
/**
- * This client program shows how to create an SCA runtime, start it,
- * and locate and invoke an SCA component
+ * This client program shows how to run a distributed SCA node. In this case a
+ * calculator node has been constructed specifically for running the calculator
+ * composite.
*/
public class CalculatorNodeExe {
-
+
public static void main(String[] args) throws Exception {
-
+
+ // Check that the correct arguments have been provided
if (null == args || args.length != 1) {
System.err.println("Useage: java CalculatorNodeExe nodename");
System.exit(1);
}
String nodeName = args[0];
+
+ // create and start the node.
+ // this creates domains based on the runtime.topology file that
+ // must be present on the classpath
+ CalculatorNode node = new CalculatorNode(Constants.DEFAULT_DOMAIN,nodeName);
+ SCADomain domain = node.start();
- // start the node and the domain at that node
- CalculatorNode node = new CalculatorNode("domainA",nodeName);
- SCADomain domain = node.startDomain();
-
+ // nodeA is the head node and runs some tests while all other nodes
+ // simply listen for incoming messages
if ( nodeName.equals("nodeA") ) {
// do some application stuff
CalculatorService calculatorService =
@@ -62,7 +69,7 @@
}
}
- node.stopDomain();
-
+ // stop the node and all the domains in it
+ node.stop();
}
}
Modified: incubator/tuscany/java/sca/samples/calculator-distributed/src/main/resources/runtime.topology
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/main/resources/runtime.topology?view=diff&rev=552346&r1=552345&r2=552346
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-distributed/src/main/resources/runtime.topology (original)
+++ incubator/tuscany/java/sca/samples/calculator-distributed/src/main/resources/runtime.topology Sun Jul 1 10:46:02 2007
@@ -18,11 +18,13 @@
* under the License.
-->
-<runtime>
+<runtime xmlns="http://www.apache.org/tuscany/topology/1.0">
<node name="nodeA">
<schema name="http" baseURL="http://localhost:80" />
<schema name="https" baseURL="https://localhost:443" />
<component name="CalculatorServiceComponent" />
+ <component name="MultiplyServiceComponent" />
+ <component name="DivideServiceComponent" />
</node>
<node name="nodeB">
<schema name="http" baseURL="http://localhost:81"/>
Modified: incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorTestCase.java?view=diff&rev=552346&r1=552345&r2=552346
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorTestCase.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-distributed/src/test/java/calculator/CalculatorTestCase.java Sun Jul 1 10:46:02 2007
@@ -22,6 +22,7 @@
import org.apache.activemq.broker.BrokerService;
import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.topology.xml.Constants;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -52,28 +53,30 @@
// start the node that runs the
// calculator component
- nodeA = new CalculatorNode("domainA","nodeA");
- domainA = nodeA.startDomain();
+ nodeA = new CalculatorNode(Constants.DEFAULT_DOMAIN,"nodeA");
+ domainA = nodeA.start();
// start the node that runs the
// add component
- nodeB = new CalculatorNode("domainA","nodeB");
- domainB = nodeB.startDomain();
+ nodeB = new CalculatorNode(Constants.DEFAULT_DOMAIN,"nodeB");
+ domainB = nodeB.start();
// start the node that runs the
// subtract component
- nodeC = new CalculatorNode("domainA","nodeC");
- domainC = nodeC.startDomain();
+ nodeC = new CalculatorNode(Constants.DEFAULT_DOMAIN,"nodeC");
+ domainC = nodeC.start();
+ // get a reference to the calculator service from domainA
+ // which will be running this component
calculatorService = domainA.getService(CalculatorService.class, "CalculatorServiceComponent");
}
@AfterClass
public static void destroy() throws Exception {
- // stop the domains
- nodeA.stopDomain();
- nodeB.stopDomain();
- nodeC.stopDomain();
+ // stop the nodes and hence the domains they contain
+ nodeA.stop();
+ nodeB.stop();
+ nodeC.stop();
// stop the ActiveMQ broker
broker.stop();
@@ -87,6 +90,5 @@
Assert.assertEquals(calculatorService.subtract(3, 2), 1.0);
Assert.assertEquals(calculatorService.multiply(3, 2), 6.0);
Assert.assertEquals(calculatorService.divide(3, 2), 1.5);
-
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org