diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-20 14:19:45 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-20 14:19:45 +0000 |
commit | 5d830efbe83d4e803d0095ec9c0a8b5d31374052 (patch) | |
tree | 6c8eef384d2903a740d3ce959768c093b2842a5f | |
parent | 4f1c083dd5892997e8fc08aae106c5aa6e622b27 (diff) |
Add getService method to DomainNode
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@882566 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 108 insertions, 5 deletions
diff --git a/java/sca/modules/domain-node/pom.xml b/java/sca/modules/domain-node/pom.xml index 6ff228d4fd..a4b86b41a3 100644 --- a/java/sca/modules/domain-node/pom.xml +++ b/java/sca/modules/domain-node/pom.xml @@ -42,7 +42,6 @@ <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-sca-api</artifactId>
<version>2.0-SNAPSHOT</version>
- <scope>test</scope>
</dependency>
<dependency>
diff --git a/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java b/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java index 1259870c37..c0ea3cc1f0 100644 --- a/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java +++ b/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java @@ -27,6 +27,9 @@ import org.apache.tuscany.sca.management.ConfigAttributes; import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.NodeFactory;
import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+import org.oasisopen.sca.client.SCAClient;
public class DomainNode {
@@ -93,10 +96,11 @@ public class DomainNode { if (nodes.containsKey(uri)) {
throw new IllegalArgumentException("contribution already added: " + uri);
}
- NodeConfiguration configuration =
- nodeFactory.createNodeConfiguration().addContribution(uri, location)
- .setDomainRegistryURI(domainRegistryURI).setDomainURI(configAttributes.getAttributes()
- .get(DOMAIN_NAME_ATTR)).setURI(uri);
+ NodeConfiguration configuration = nodeFactory.createNodeConfiguration();
+ configuration.addContribution(uri, location);
+ configuration.setDomainRegistryURI(domainRegistryURI);
+ configuration.setDomainURI(configAttributes.getAttributes().get(DOMAIN_NAME_ATTR));
+ configuration.setURI(uri);
Node node = nodeFactory.createNode(configuration).start();
nodes.put(uri, node);
}
@@ -154,4 +158,13 @@ public class DomainNode { }
return uri;
}
+
+ public <T> T getService(Class<T> interfaze, String uri) throws NoSuchServiceException {
+ try {
+ return SCAClient.getService(interfaze, configAttributes.getAttributes().get(DOMAIN_NAME_ATTR) + "/" + uri);
+ } catch (NoSuchDomainException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
}
diff --git a/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java b/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java new file mode 100644 index 0000000000..f8399cf9eb --- /dev/null +++ b/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java @@ -0,0 +1,91 @@ +/*
+ * 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.domain.node;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import itest.nodes.Helloworld;
+import static org.junit.Assert.fail;
+
+import org.apache.tuscany.sca.domain.node.DomainNode;
+import org.junit.After;
+import org.junit.Test;
+import org.oasisopen.sca.SCARuntimeException;
+import org.oasisopen.sca.client.SCAClient;
+
+/**
+ * This shows how to test the Calculator service component.
+ */
+public class GetServiceTestCase{
+
+ private static DomainNode clientNode;
+ private static DomainNode serviceNode;
+
+ @Test
+ public void testTwoNodesSameDomain() throws Exception {
+ serviceNode = new DomainNode("vm://fooDomain", "target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar");
+ clientNode = new DomainNode("vm://fooDomain", "target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar");
+
+ Helloworld service = serviceNode.getService(Helloworld.class, "HelloworldService");
+ assertNotNull(service);
+ assertEquals("Hello Petra", service.sayHello("Petra"));
+
+ Helloworld client = clientNode.getService(Helloworld.class, "HelloworldClient");
+ assertNotNull(client);
+ assertEquals("Hi Hello Petra", client.sayHello("Petra"));
+
+ if (clientNode != null && clientNode.isStarted()) {
+ clientNode.stop();
+ }
+ if (serviceNode != null && serviceNode.isStarted()) {
+ serviceNode.stop();
+ }
+ }
+
+ @Test
+ public void testTwoNodesDifferentDomains() throws Exception {
+ serviceNode = new DomainNode("vm://fooDomain", "target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar");
+ Helloworld service = serviceNode.getService(Helloworld.class, "HelloworldService");
+ assertNotNull(service);
+ assertEquals("Hello Petra", service.sayHello("Petra"));
+
+ clientNode = new DomainNode("vm://barDomain", "target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar");
+ Helloworld client = clientNode.getService(Helloworld.class, "HelloworldClient");
+ assertNotNull(client);
+
+ try {
+ assertEquals("Hi Hello Petra", client.sayHello("Petra"));
+ fail();
+ } catch (SCARuntimeException e) {
+ // FIXME: this gives an SCARuntimeException, would be better to be something like ServiceNotFoundException?
+ // expected
+ }
+ }
+
+ @After
+ public void tearDownAfterClass() throws Exception {
+ if (clientNode != null && clientNode.isStarted()) {
+ clientNode.stop();
+ }
+ if (serviceNode != null && serviceNode.isStarted()) {
+ serviceNode.stop();
+ }
+ }
+}
|