Author: antelder
Date: Fri Nov 20 14:19:45 2009
New Revision: 882566
URL: http://svn.apache.org/viewvc?rev=882566&view=rev
Log:
Add getService method to DomainNode
Added:
tuscany/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
Modified:
tuscany/java/sca/modules/domain-node/pom.xml
tuscany/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java
Modified: tuscany/java/sca/modules/domain-node/pom.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/domain-node/pom.xml?rev=882566&r1=882565&r2=882566&view=diff
==============================================================================
--- tuscany/java/sca/modules/domain-node/pom.xml (original)
+++ tuscany/java/sca/modules/domain-node/pom.xml Fri Nov 20 14:19:45 2009
@@ -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>
Modified:
tuscany/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java?rev=882566&r1=882565&r2=882566&view=diff
==============================================================================
---
tuscany/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java
(original)
+++
tuscany/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/domain/node/DomainNode.java
Fri Nov 20 14:19:45 2009
@@ -27,6 +27,9 @@
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 @@
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 @@
}
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);
+ }
+ }
+
}
Added:
tuscany/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java?rev=882566&view=auto
==============================================================================
---
tuscany/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
(added)
+++
tuscany/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
Fri Nov 20 14:19:45 2009
@@ -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();
+ }
+ }
+}