Author: rfeng
Date: Mon Sep  8 18:29:55 2008
New Revision: 693336

URL: http://svn.apache.org/viewvc?rev=693336&view=rev
Log:
Use the bundle to load the implementation.node classes

Modified:
    
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncher.java
    
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java

Modified: 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncher.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncher.java?rev=693336&r1=693335&r2=693336&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncher.java
 (original)
+++ 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncher.java
 Mon Sep  8 18:29:55 2008
@@ -65,7 +65,7 @@
      * @throws LauncherException
      */
     public <T> T createNodeFromURL(String configurationURL) throws 
LauncherException {
-        return (T)node(configurationURL, null, null, null, null);
+        return (T)node(configurationURL, null, null, null, null, 
bundleContext);
     }
 
     /**
@@ -80,7 +80,7 @@
      * @throws LauncherException
      */
     public <T> T createNode(String compositeURI, Contribution... 
contributions) throws LauncherException {
-        return (T)node(null, compositeURI, null, contributions, null);
+        return (T)node(null, compositeURI, null, contributions, null, 
bundleContext);
     }
 
     /**
@@ -94,7 +94,7 @@
      */
     public <T> T createNode(String compositeURI, String compositeContent, 
Contribution... contributions)
         throws LauncherException {
-        return (T)node(null, compositeURI, compositeContent, contributions, 
null);
+        return (T)node(null, compositeURI, compositeContent, contributions, 
null, bundleContext);
     }
 
     /**
@@ -112,7 +112,7 @@
      * @return A newly created SCA node
      */
     public <T> T createNodeFromClassLoader(String compositeURI, ClassLoader 
classLoader) throws LauncherException {
-        return (T)node(null, compositeURI, null, null, classLoader);
+        return (T)node(null, compositeURI, null, null, classLoader, 
bundleContext);
     }
 
     public static void main(String[] args) throws Exception {

Modified: 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java?rev=693336&r1=693335&r2=693336&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
 (original)
+++ 
tuscany/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
 Mon Sep  8 18:29:55 2008
@@ -47,6 +47,7 @@
 import java.util.zip.ZipInputStream;
 
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
 
 /**
  * Common functions and constants used by the admin components.
@@ -55,6 +56,8 @@
  */
 final class NodeLauncherUtil {
 
+    private static final String LAUNCHER_EQUINOX_LIBRARIES = 
"org.apache.tuscany.sca.node.launcher.equinox.libraries";
+
     private static final String SCANODE_FACTORY = 
"org.apache.tuscany.sca.node.SCANodeFactory";
 
     private static final String DOMAIN_MANAGER_LAUNCHER_BOOTSTRAP =
@@ -69,18 +72,29 @@
     /**
      * Collect JAR files under the given directory.
      * @param contributions
-     * 
+     * @param bundleContext TODO
      * @throws LauncherException
      */
     static Object node(String configurationURI,
                        String compositeURI,
                        String compositeContent,
                        Contribution[] contributions,
-                       ClassLoader contributionClassLoader) throws 
LauncherException {
+                       ClassLoader contributionClassLoader, BundleContext 
bundleContext) throws LauncherException {
         try {
+            Bundle bundle = null;
+            for (Bundle b : bundleContext.getBundles()) {
+                if 
("org.apache.tuscany.sca.implementation.node.runtime".equals(b.getSymbolicName()))
 {
+                    bundle = b;
+                    break;
+                }
+            }
+            if (bundle == null) {
+                throw new IllegalStateException(
+                                                "Bundle 
org.apache.tuscany.sca.implementation.node.runtime is not installed");
+            }
             // Use Java reflection to create the node as only the runtime class
             // loader knows the runtime classes required by the node
-            Class<?> bootstrapClass = 
Class.forName(NODE_IMPLEMENTATION_LAUNCHER_BOOTSTRAP);
+            Class<?> bootstrapClass = 
bundle.loadClass(NODE_IMPLEMENTATION_LAUNCHER_BOOTSTRAP);
 
             Object bootstrap;
             if (configurationURI != null) {
@@ -256,7 +270,7 @@
             for (String jarFile : jarFiles) {
                 addPackages(jarFile, packages);
                 classpath.append("\"external:");
-                classpath.append(file(new 
URL(jarFile)).getAbsolutePath().replace(File.separatorChar, '/'));
+                classpath.append(file(new 
URL(jarFile)).getPath().replace(File.separatorChar, '/'));
                 classpath.append("\",");
             }
 
@@ -282,7 +296,7 @@
             Attributes attributes = manifest.getMainAttributes();
             attributes.putValue("Manifest-Version", "1.0");
             attributes.putValue(BUNDLE_MANIFESTVERSION, "2");
-            attributes.putValue(BUNDLE_SYMBOLICNAME, 
"org.apache.tuscany.sca.node.launcher.equinox.libraries");
+            attributes.putValue(BUNDLE_SYMBOLICNAME, 
LAUNCHER_EQUINOX_LIBRARIES);
             attributes.putValue(EXPORT_PACKAGE, exports.substring(0, 
exports.length() - 1));
             attributes.putValue(IMPORT_PACKAGE, imports.substring(0, 
imports.length() - 1));
             attributes.putValue(BUNDLE_CLASSPATH, classpath.substring(0, 
classpath.length() - 1));


Reply via email to