diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-01-13 15:43:49 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-01-13 15:43:49 +0000 |
commit | f9bf40e621044412c6e5ecc8a435b328e5d135c4 (patch) | |
tree | 64d7ecd5ed08a7e9a5341731815e387574a6ce16 /sca-java-2.x/trunk | |
parent | eede9d93293a288f2aebdd84694fa597fb0e88ff (diff) |
Add methods to Node to replicate whats in DomainNode so i can get rid of that. (We still need to do the refactoring of Node as we started discussing on the ML, i'll start that again next week, just want to get the domain changes a bit more done so adding these here for now)
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@898806 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk')
4 files changed, 65 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java b/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java index c45415f153..0c1633b9d9 100644 --- a/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java +++ b/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.node; +import java.util.List; + import org.apache.tuscany.sca.node.configuration.NodeConfiguration; @@ -49,4 +51,5 @@ public interface Node extends Client { */ void destroy(); + public List<String> getServiceNames(); } diff --git a/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java b/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java index a351b7b074..f650268c73 100644 --- a/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java +++ b/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java @@ -150,6 +150,15 @@ public abstract class NodeFactory extends DefaultNodeConfigurationFactory { } } + public List<String> getServiceNames() { + try { + return (List<String>)node.getClass().getMethod("getServiceNames").invoke(node); + } catch (Throwable e) { + handleException(e); + return null; + } + } + } /** @@ -297,6 +306,28 @@ public abstract class NodeFactory extends DefaultNodeConfigurationFactory { return createNode(configuration); } + public final Node createNode(URI configURI, String... locations) { + Contribution[] contributions = getContributions(Arrays.asList(locations)); + NodeConfiguration configuration = createConfiguration(contributions); + configuration.setDomainRegistryURI(configURI.toString()); + configuration.setDomainURI(getDomainName(configURI)); + return createNode(configuration); + } + + public static String getDomainName(URI configURI) { + // no idea if this is needed, do it anyway for now till the Node refactor is done + String s = configURI.getHost(); + if (s == null) { + s = configURI.getSchemeSpecificPart(); + if (s != null) { + if (s.indexOf(':') > -1) { + s = s.substring(s.indexOf(':')+1); + } + } + } + return s; + } + /** * The following methods are used by the node launcher */ diff --git a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java index 62f18f08e0..51073acfd1 100644 --- a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java +++ b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java @@ -366,4 +366,25 @@ public class NodeImpl implements Node, Client { return result; } + + public List<String> getServiceNames() { + List<String> serviceNames = new ArrayList<String>(); + ExtensionPointRegistry extensionsRegistry = getExtensionPoints(); + UtilityExtensionPoint utilities = extensionsRegistry.getExtensionPoint(UtilityExtensionPoint.class); + DomainRegistryFactory domainRegistryFactory = utilities.getUtility(DomainRegistryFactory.class); + EndpointRegistry endpointRegistry = domainRegistryFactory.getEndpointRegistry(configuration.getDomainRegistryURI(), configuration.getDomainName()); + for (Endpoint endpoint : endpointRegistry.getEndpoints()) { + // Would be nice if Endpoint.getURI() returned this: + String name = endpoint.getComponent().getName() + "/" + endpoint.getService().getName(); + if (endpoint.getBinding() != null) { + // TODO: shouldn't the binding name be null if its not explicitly specified? + // For now don't include it if the same as the default + if (!endpoint.getService().getName().equals(endpoint.getBinding().getName())) { + name += "/" + endpoint.getBinding().getName(); + } + } + serviceNames.add(name); + } + return serviceNames; + } } diff --git a/sca-java-2.x/trunk/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java b/sca-java-2.x/trunk/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java index 5a47465702..70ccf2ab19 100644 --- a/sca-java-2.x/trunk/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java +++ b/sca-java-2.x/trunk/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.node.impl; +import java.net.URI; + import org.apache.tuscany.sca.common.java.io.IOHelper; import org.junit.Assert; import org.junit.Test; @@ -36,4 +38,12 @@ public class NodeUtilTestCase { Assert.assertEquals("file:/a%20b", IOHelper.createURI("file:/a b").toString()); Assert.assertEquals("file:/a%20b", IOHelper.createURI("file:/a%20b").toString()); } + + @Test + public void testDomainURI() { + Assert.assertEquals("foo", NodeFactoryImpl.getDomainName(URI.create("tuscany:foo"))); + Assert.assertEquals("foo", NodeFactoryImpl.getDomainName(URI.create("tuscany:vm:foo"))); + Assert.assertEquals("foo", NodeFactoryImpl.getDomainName(URI.create("vm:foo"))); + Assert.assertEquals("foo", NodeFactoryImpl.getDomainName(URI.create("bla://foo"))); + } } |