diff options
Diffstat (limited to 'branches/sca-equinox/modules/node-api/src/main/java')
-rw-r--r-- | branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Client.java (renamed from branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAClient.java) | 2 | ||||
-rw-r--r-- | branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Contribution.java (renamed from branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAContribution.java) | 4 | ||||
-rw-r--r-- | branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/ContributionLocationHelper.java | 49 | ||||
-rw-r--r-- | branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java (renamed from branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANode.java) | 7 | ||||
-rw-r--r-- | branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java (renamed from branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANodeFactory.java) | 30 |
5 files changed, 77 insertions, 15 deletions
diff --git a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAClient.java b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Client.java index f390e8881e..8ca5262eff 100644 --- a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAClient.java +++ b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Client.java @@ -28,7 +28,7 @@ import org.osoa.sca.ServiceReference; * * @version $Rev$ $Date$ */ -public interface SCAClient { +public interface Client { /** * Cast a type-safe reference to a CallahbleReference. Converts a type-safe diff --git a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAContribution.java b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Contribution.java index de7f352122..f69e18dc63 100644 --- a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCAContribution.java +++ b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Contribution.java @@ -21,7 +21,7 @@ package org.apache.tuscany.sca.node; /** * Represents an SCA contribution uri + location. */ -public final class SCAContribution { +public final class Contribution { private String uri; private String location; @@ -31,7 +31,7 @@ public final class SCAContribution { * @param uri The URI that uniquely identifies the contribution in the SCA domain * @param location The URL of the contribution archive */ - public SCAContribution(String uri, String location) { + public Contribution(String uri, String location) { this.uri = uri; this.location = location; } diff --git a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/ContributionLocationHelper.java b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/ContributionLocationHelper.java new file mode 100644 index 0000000000..74ebe556bc --- /dev/null +++ b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/ContributionLocationHelper.java @@ -0,0 +1,49 @@ +/* + * 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.node; + +import java.net.URL; +import java.security.AccessController; +import java.security.PrivilegedAction; + +/** + * ContributionLocationHelper + * + * @version $Rev: $ $Date: $ + */ +public class ContributionLocationHelper { + + /** + * Returns the location of the SCA contribution containing the given class. + * + * @param anchorClass + * @return + */ + public static String getContributionLocation(final Class<?> anchorClass) { + URL url = AccessController.doPrivileged(new PrivilegedAction<URL>() { + public URL run() { + return anchorClass.getProtectionDomain().getCodeSource().getLocation(); + } + }); + String uri = url.toString(); + return uri; + } + +} diff --git a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANode.java b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java index fea749a57c..3f4998bcc9 100644 --- a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANode.java +++ b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/Node.java @@ -27,7 +27,7 @@ package org.apache.tuscany.sca.node; * * @version $Rev$ $Date$ */ -public interface SCANode { +public interface Node extends Client { /** * Start the composite loaded in the node. @@ -38,5 +38,10 @@ public interface SCANode { * Stop the composite loaded in the node. */ void stop(); + + /** + * Destroy the node. + */ + void destroy(); } diff --git a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANodeFactory.java b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java index bca649dbae..a9f75fc8be 100644 --- a/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/SCANodeFactory.java +++ b/branches/sca-equinox/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java @@ -31,9 +31,9 @@ import org.osoa.sca.ServiceRuntimeException; * * @version $Rev$ $Date$ */ -public abstract class SCANodeFactory { +public abstract class NodeFactory { - public static class NodeProxy implements SCANode, SCAClient { + public static class NodeProxy implements Node, Client { private Object node; private NodeProxy(Object node) { @@ -95,6 +95,14 @@ public abstract class SCANodeFactory { } } + public void destroy() { + try { + node.getClass().getMethod("destroy").invoke(node); + } catch (Throwable e) { + handleException(e); + } + } + private static void handleException(Throwable ex) { if (ex instanceof InvocationTargetException) { ex = ((InvocationTargetException)ex).getTargetException(); @@ -116,8 +124,8 @@ public abstract class SCANodeFactory { * * @return a new SCA node factory */ - public static SCANodeFactory newInstance() { - SCANodeFactory scaNodeFactory = null; + public static NodeFactory newInstance() { + NodeFactory scaNodeFactory = null; try { // final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); @@ -125,10 +133,10 @@ public abstract class SCANodeFactory { try { Class<?> discoveryClass = Class.forName("org.apache.tuscany.sca.extensibility.ServiceDiscovery"); Object instance = discoveryClass.getMethod("getInstance").invoke(null); - Object factoryDeclaration = discoveryClass.getMethod("getFirstServiceDeclaration", String.class).invoke(instance, SCANodeFactory.class.getName()); + Object factoryDeclaration = discoveryClass.getMethod("getFirstServiceDeclaration", String.class).invoke(instance, NodeFactory.class.getName()); if (factoryDeclaration != null) { Class<?> factoryImplClass = (Class<?>)factoryDeclaration.getClass().getMethod("loadClass").invoke(factoryDeclaration); - scaNodeFactory = (SCANodeFactory)factoryImplClass.newInstance(); + scaNodeFactory = (NodeFactory)factoryImplClass.newInstance(); return scaNodeFactory; } } catch (ClassNotFoundException e) { @@ -139,7 +147,7 @@ public abstract class SCANodeFactory { String className = "org.apache.tuscany.sca.node.impl.NodeFactoryImpl"; Class<?> cls = Class.forName(className); - scaNodeFactory = (SCANodeFactory)cls.newInstance(); + scaNodeFactory = (NodeFactory)cls.newInstance(); return scaNodeFactory; } catch (Exception e) { @@ -155,7 +163,7 @@ public abstract class SCANodeFactory { * * @return a new SCA node. */ - public abstract SCANode createSCANodeFromURL(String configurationURL); + public abstract Node createNode(String configurationURL); /** * Creates a new SCA node. @@ -167,7 +175,7 @@ public abstract class SCANodeFactory { * * @return a new SCA node. */ - public abstract SCANode createSCANode(String compositeURI, SCAContribution... contributions); + public abstract Node createNode(String compositeURI, Contribution... contributions); /** * Creates a new SCA node. @@ -177,8 +185,8 @@ public abstract class SCANodeFactory { * @param contributions the URI of the contributions that provides the composites and related artifacts * @return a new SCA node. */ - public abstract SCANode createSCANode(String compositeURI, + public abstract Node createNode(String compositeURI, String compositeContent, - SCAContribution... contributions); + Contribution... contributions); } |