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();
+        }
+    }
+}


Reply via email to