From efe3363a815a777ecd283928900404dea84a7e1f Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Thu, 9 Oct 2008 06:33:54 +0000 Subject: Work in progress. Fixed implementation of NodeImpl, now working without dependencies on implementations from other bundles (except RuntimeAssemblyFactory, which will need to be cleaned up too). Started to remove dependencies on host-embedded and port code to NodeFactory and Node, as an interim step to bring them up, before porting them to the OSGi-enabled node launcher. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@703068 13f79535-47bb-0310-9956-ffa450edef68 --- .../NodeImplementationDaemonBootstrap.java | 42 +++++++++++--- .../NodeImplementationLauncherBootstrap.java | 64 +++++++++++----------- .../node/webapp/NodeWebAppServletHost.java | 16 +++--- 3 files changed, 73 insertions(+), 49 deletions(-) (limited to 'branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org') diff --git a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationDaemonBootstrap.java b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationDaemonBootstrap.java index 8de2a3a3f9..48abc21520 100644 --- a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationDaemonBootstrap.java +++ b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationDaemonBootstrap.java @@ -19,8 +19,12 @@ package org.apache.tuscany.sca.implementation.node.launcher; -import org.apache.tuscany.sca.node.SCANode; -import org.apache.tuscany.sca.node.SCANodeFactory; +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.ContributionLocationHelper; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +import org.osoa.sca.CallableReference; +import org.osoa.sca.ServiceReference; /** * Bootstrap class for the SCA node daemon. @@ -28,15 +32,15 @@ import org.apache.tuscany.sca.node.SCANodeFactory; * @version $Rev$ $Date$ */ public class NodeImplementationDaemonBootstrap { - private SCANode node; + private Node node; /** * A node wrappering an instance of a node daemon. */ - public static class NodeFacade implements SCANode { + public static class NodeFacade implements Node { private ClassLoader threadContextClassLoader; private ClassLoader runtimeClassLoader; - private SCANode daemon; + private Node daemon; private NodeFacade() { runtimeClassLoader = Thread.currentThread().getContextClassLoader(); @@ -47,8 +51,9 @@ public class NodeImplementationDaemonBootstrap { boolean started = false; try { Thread.currentThread().setContextClassLoader(runtimeClassLoader); - SCANodeFactory factory = SCANodeFactory.newInstance(); - daemon = factory.createSCANodeFromClassLoader("NodeDaemon.composite", threadContextClassLoader); + NodeFactory factory = NodeFactory.newInstance(); + String contribution = ContributionLocationHelper.getContributionLocation(getClass()); + daemon = factory.createNode("NodeDaemon.composite", new Contribution("node-runtime", contribution)); started = true; } finally { if (!started) { @@ -65,6 +70,27 @@ public class NodeImplementationDaemonBootstrap { Thread.currentThread().setContextClassLoader(threadContextClassLoader); } } + + public void destroy() { + try { + Thread.currentThread().setContextClassLoader(runtimeClassLoader); + daemon.destroy(); + } finally { + Thread.currentThread().setContextClassLoader(threadContextClassLoader); + } + } + + public > R cast(B target) throws IllegalArgumentException { + throw new UnsupportedOperationException(); + } + + public B getService(Class businessInterface, String serviceName) { + throw new UnsupportedOperationException(); + } + + public ServiceReference getServiceReference(Class businessInterface, String serviceName) { + throw new UnsupportedOperationException(); + } } /** @@ -78,7 +104,7 @@ public class NodeImplementationDaemonBootstrap { * Returns the node representing the daemon. * @return */ - public SCANode getNode() { + public Node getNode() { return node; } diff --git a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java index 0264574fb9..8552c3434d 100644 --- a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java +++ b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java @@ -19,10 +19,10 @@ package org.apache.tuscany.sca.implementation.node.launcher; -import org.apache.tuscany.sca.node.SCAClient; -import org.apache.tuscany.sca.node.SCAContribution; -import org.apache.tuscany.sca.node.SCANode; -import org.apache.tuscany.sca.node.SCANodeFactory; +import org.apache.tuscany.sca.node.Client; +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; import org.osoa.sca.CallableReference; import org.osoa.sca.ServiceReference; @@ -33,17 +33,17 @@ import org.osoa.sca.ServiceReference; */ public class NodeImplementationLauncherBootstrap { - private SCANode node; + private Node node; /** * A node facade. */ - public static class NodeFacade implements SCANode, SCAClient { + public static class NodeFacade implements Node, Client { private ClassLoader threadContextClassLoader; private ClassLoader runtimeClassLoader; - private SCANode delegate; + private Node delegate; - private NodeFacade(SCANode delegate) { + private NodeFacade(Node delegate) { runtimeClassLoader = Thread.currentThread().getContextClassLoader(); this.delegate = delegate; } @@ -71,16 +71,25 @@ public class NodeImplementationLauncherBootstrap { } } + public void destroy() { + try { + Thread.currentThread().setContextClassLoader(runtimeClassLoader); + delegate.destroy(); + } finally { + Thread.currentThread().setContextClassLoader(threadContextClassLoader); + } + } + public > R cast(B target) throws IllegalArgumentException { - return (R)((SCAClient)delegate).cast(target); + return (R)((Client)delegate).cast(target); } public B getService(Class businessInterface, String serviceName) { - return (B)((SCAClient)delegate).getService(businessInterface, serviceName); + return (B)((Client)delegate).getService(businessInterface, serviceName); } public ServiceReference getServiceReference(Class businessInterface, String referenceName) { - return (ServiceReference)((SCAClient)delegate).getServiceReference(businessInterface, referenceName); + return (ServiceReference)((Client)delegate).getServiceReference(businessInterface, referenceName); } } @@ -90,19 +99,8 @@ public class NodeImplementationLauncherBootstrap { * @param configurationURI */ public NodeImplementationLauncherBootstrap(String configurationURI) throws Exception { - SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); - node = new NodeFacade(nodeFactory.createSCANodeFromURL(configurationURI)); - } - - /** - * Bootstrap a new SCA node. - * - * @param configurationURI - * @param contributionClassLoader - */ - public NodeImplementationLauncherBootstrap(String compositeURI, ClassLoader contributionClassLoader) throws Exception { - SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); - node = new NodeFacade(nodeFactory.createSCANodeFromClassLoader(compositeURI, contributionClassLoader)); + NodeFactory nodeFactory = NodeFactory.newInstance(); + node = new NodeFacade(nodeFactory.createNode(configurationURI)); } /** @@ -113,12 +111,12 @@ public class NodeImplementationLauncherBootstrap { * @param locations */ public NodeImplementationLauncherBootstrap(String compositeURI, String[] uris, String[] locations) throws Exception { - SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); - SCAContribution[] contributions = new SCAContribution[uris.length]; + NodeFactory nodeFactory = NodeFactory.newInstance(); + Contribution[] contributions = new Contribution[uris.length]; for (int i = 0; i < uris.length; i++) { - contributions[i] = new SCAContribution(uris[i], locations[i]); + contributions[i] = new Contribution(uris[i], locations[i]); } - node = new NodeFacade(nodeFactory.createSCANode(compositeURI, contributions)); + node = new NodeFacade(nodeFactory.createNode(compositeURI, contributions)); } /** @@ -129,12 +127,12 @@ public class NodeImplementationLauncherBootstrap { * @param locations */ public NodeImplementationLauncherBootstrap(String compositeURI, String compositeContent, String[] uris, String[] locations) throws Exception { - SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); - SCAContribution[] contributions = new SCAContribution[uris.length]; + NodeFactory nodeFactory = NodeFactory.newInstance(); + Contribution[] contributions = new Contribution[uris.length]; for (int i = 0; i < uris.length; i++) { - contributions[i] = new SCAContribution(uris[i], locations[i]); + contributions[i] = new Contribution(uris[i], locations[i]); } - node = new NodeFacade(nodeFactory.createSCANode(compositeURI, compositeContent, contributions)); + node = new NodeFacade(nodeFactory.createNode(compositeURI, compositeContent, contributions)); } /** @@ -142,7 +140,7 @@ public class NodeImplementationLauncherBootstrap { * * @return */ - public SCANode getNode() { + public Node getNode() { return node; } diff --git a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/webapp/NodeWebAppServletHost.java b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/webapp/NodeWebAppServletHost.java index 5a50f87d4c..43c91ac9af 100644 --- a/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/webapp/NodeWebAppServletHost.java +++ b/branches/sca-equinox/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/webapp/NodeWebAppServletHost.java @@ -47,9 +47,9 @@ import org.apache.tuscany.sca.host.http.ServletHost; import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint; import org.apache.tuscany.sca.host.http.ServletMappingException; import org.apache.tuscany.sca.implementation.node.launcher.NodeImplementationLauncherUtil; -import org.apache.tuscany.sca.node.SCAClient; -import org.apache.tuscany.sca.node.SCANode; -import org.apache.tuscany.sca.node.SCANodeFactory; +import org.apache.tuscany.sca.node.Client; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; /** * ServletHost implementation for use in a Webapp Node environment. @@ -62,7 +62,7 @@ public class NodeWebAppServletHost implements ServletHost, Filter { private static final NodeWebAppServletHost servletHost = new NodeWebAppServletHost(); private Map servlets = new HashMap(); - private SCANode node; + private Node node; private String contextPath = "/"; private int defaultPort = 8080; @@ -112,8 +112,8 @@ public class NodeWebAppServletHost implements ServletHost, Filter { String nodeConfiguration = NodeImplementationLauncherUtil.nodeConfigurationURI(nodeName); // Create the SCA node - SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); - node = nodeFactory.createSCANodeFromURL(nodeConfiguration); + NodeFactory nodeFactory = NodeFactory.newInstance(); + node = nodeFactory.createNode(nodeConfiguration); // Register the Servlet host ServletHostExtensionPoint servletHosts = servletHosts(node); @@ -121,7 +121,7 @@ public class NodeWebAppServletHost implements ServletHost, Filter { servletHosts.addServletHost(servletHost); // Save the node in the Servlet context - servletContext.setAttribute(SCAClient.class.getName(), node); + servletContext.setAttribute(Client.class.getName(), node); // Start the node node.start(); @@ -350,7 +350,7 @@ public class NodeWebAppServletHost implements ServletHost, Filter { * * @return */ - private static ServletHostExtensionPoint servletHosts(SCANode node) { + private static ServletHostExtensionPoint servletHosts(Node node) { //FIXME Need a clean way to get the extension point registry // from the node ExtensionPointRegistry registry; -- cgit v1.2.3