summaryrefslogtreecommitdiffstats
path: root/java/sca/modules
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 22:53:11 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 22:53:11 +0000
commit286087d1aefc942ea9cafa0f2523ee655c5179f8 (patch)
tree702913e225176ca36e2b6efeb129c1b6a09b260d /java/sca/modules
parente30b75d984cf32851023d4550463c535a12f0980 (diff)
Support to start OSGi from a list of jar files
Add more context to ServiceDiscoverer git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684135 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules')
-rw-r--r--java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java6
-rw-r--r--java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java6
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java16
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java9
-rw-r--r--java/sca/modules/node2-impl/pom.xml2
-rw-r--r--java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/FelixOSGiHost.java16
-rw-r--r--java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/LauncherBundleActivator.java27
7 files changed, 63 insertions, 19 deletions
diff --git a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
index ffe0407a68..cbcca659a8 100644
--- a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
@@ -326,8 +326,12 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
* This class loader can be set as the thread context class loader for non-OSGi code
* @return
*/
- public ClassLoader getClassLoader() {
+ public ClassLoader getContextClassLoader() {
return classLoader;
}
+ public <T> T getContext() {
+ return (T) context;
+ }
+
}
diff --git a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
index b208310a58..fa594be8d6 100644
--- a/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
+++ b/java/sca/modules/extensibility-osgi/src/main/java/org/apache/tuscany/sca/extensibility/osgi/OSGiServiceDiscoverer.java
@@ -262,9 +262,13 @@ public class OSGiServiceDiscoverer implements ServiceDiscoverer {
* This class loader can be set as the thread context class loader for non-OSGi code
* @return
*/
- public ClassLoader getClassLoader() {
+ public ClassLoader getContextClassLoader() {
return classLoader;
}
+
+ public <T> T getContext() {
+ return (T) context;
+ }
@SuppressWarnings("unchecked")
public Set<ServiceDeclaration> discover(String serviceName, boolean firstOnly) {
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java
index da94931087..59c50785a6 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ClasspathServiceDiscoverer.java
@@ -81,7 +81,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer {
}
public Class<?> loadClass(String className) throws ClassNotFoundException {
- return getClassLoader().loadClass(className);
+ return getContextClassLoader().loadClass(className);
}
private ClasspathServiceDiscoverer getOuterType() {
@@ -90,7 +90,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer {
public String toString() {
StringBuffer sb = new StringBuffer();
- sb.append("ClassLoader: ").append(getClassLoader());
+ sb.append("ClassLoader: ").append(getContextClassLoader());
sb.append(" Attributes: ").append(attributes);
return sb.toString();
}
@@ -98,7 +98,7 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer {
public URL getResource(final String name) {
return AccessController.doPrivileged(new PrivilegedAction<URL>() {
public URL run() {
- return getClassLoader().getResource(name);
+ return getContextClassLoader().getResource(name);
}
});
}
@@ -123,14 +123,14 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer {
return AccessController.doPrivileged(new PrivilegedExceptionAction<List<URL>>() {
public List<URL> run() throws IOException {
if (firstOnly) {
- URL url = getClassLoader().getResource(name);
+ URL url = getContextClassLoader().getResource(name);
if (url != null) {
return Arrays.asList(url);
} else {
return Collections.emptyList();
}
} else {
- return Collections.list(getClassLoader().getResources(name));
+ return Collections.list(getContextClassLoader().getResources(name));
}
}
});
@@ -139,9 +139,13 @@ public class ClasspathServiceDiscoverer implements ServiceDiscoverer {
}
}
- private ClassLoader getClassLoader() {
+ public ClassLoader getContextClassLoader() {
return classLoaderReference.get();
}
+
+ public <T> T getContext() {
+ return (T) getContextClassLoader();
+ }
/**
* Parse a service declaration in the form class;attr=value,attr=value and
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
index 4079f86d99..b4fdfd4d8a 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
@@ -33,4 +33,13 @@ public interface ServiceDiscoverer {
* @return A set of service descriptors
*/
Set<ServiceDeclaration> discover(String serviceName, boolean firstOnly);
+
+ /**
+ * Get the context for the service discoverer
+ * @param <T> It can be a ClassLoader for JSE or BundleContext for OSGi
+ * @return The context
+ */
+ <T> T getContext();
+
+ ClassLoader getContextClassLoader();
}
diff --git a/java/sca/modules/node2-impl/pom.xml b/java/sca/modules/node2-impl/pom.xml
index b9abde5257..62846f08b2 100644
--- a/java/sca/modules/node2-impl/pom.xml
+++ b/java/sca/modules/node2-impl/pom.xml
@@ -83,7 +83,7 @@
<Bundle-Version>${tuscany.version}</Bundle-Version>
<Bundle-SymbolicName>org.apache.tuscany.sca.node2.impl</Bundle-SymbolicName>
<Bundle-Description>${pom.name}</Bundle-Description>
- <Export-Package>org.apache.tuscany.sca.node*</Export-Package>
+ <Export-Package>org.apache.tuscany.sca.node.impl*</Export-Package>
</instructions>
</configuration>
</plugin>
diff --git a/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/FelixOSGiHost.java b/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/FelixOSGiHost.java
index cdb13decdd..a755e6d3ec 100644
--- a/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/FelixOSGiHost.java
+++ b/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/FelixOSGiHost.java
@@ -40,6 +40,7 @@ import org.osgi.framework.Constants;
public class FelixOSGiHost implements OSGiHost {
private Felix felix;
+ private LauncherBundleActivator activator;
private ClassLoader tccl;
private final static String systemPackages =
@@ -82,6 +83,17 @@ public class FelixOSGiHost implements OSGiHost {
+ "javax.transaction, "
+ "javax.transaction.xa";
+ public LauncherBundleActivator getActivator() {
+ if (activator == null) {
+ activator = new LauncherBundleActivator();
+ }
+ return activator;
+ }
+
+ public void setActivator(LauncherBundleActivator activator) {
+ this.activator = activator;
+ }
+
public BundleContext start() {
try {
startup();
@@ -116,7 +128,7 @@ public class FelixOSGiHost implements OSGiHost {
configMap.put(BundleCache.CACHE_PROFILE_DIR_PROP, "target/.felix");
List<BundleActivator> list = new ArrayList<BundleActivator>();
- list.add(new LauncherBundleActivator());
+ list.add(getActivator());
// Now create an instance of the framework with
// our configuration properties and activator.
@@ -139,7 +151,7 @@ public class FelixOSGiHost implements OSGiHost {
Method getter = discovererClass.getMethod("getServiceDiscoverer");
Object discoverer = getter.invoke(null);
- Method getCL = discoverer.getClass().getMethod("getClassLoader");
+ Method getCL = discoverer.getClass().getMethod("getContextClassLoader");
ClassLoader cl = (ClassLoader)getCL.invoke(discoverer);
return cl;
} catch (Exception e) {
diff --git a/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/LauncherBundleActivator.java b/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/LauncherBundleActivator.java
index 3778521159..13af11238e 100644
--- a/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/LauncherBundleActivator.java
+++ b/java/sca/modules/node2-launcher-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/launcher/LauncherBundleActivator.java
@@ -40,8 +40,17 @@ public class LauncherBundleActivator implements BundleActivator, Constants, Bund
private BundleContext bundleContext;
private List<Bundle> tuscanyBundles = new ArrayList<Bundle>();
-
- private List<URL> jarFiles = new ArrayList<URL>();
+
+ private List<URL> jarFiles;
+
+ public LauncherBundleActivator() {
+ super();
+ }
+
+ public LauncherBundleActivator(List<URL> jarFiles) {
+ super();
+ this.jarFiles = jarFiles;
+ }
public static String toString(Bundle b, boolean verbose) {
StringBuffer sb = new StringBuffer();
@@ -124,10 +133,12 @@ public class LauncherBundleActivator implements BundleActivator, Constants, Bund
// FIXME: SDO bundles dont have the correct dependencies
System.setProperty("commonj.sdo.impl.HelperProvider", "org.apache.tuscany.sdo.helper.HelperProviderImpl");
- File tuscanyInstallDir = findTuscanyInstallDir(bundleContext.getBundle());
+ List<URL> urls = jarFiles;
+ if (urls == null) {
+ File tuscanyInstallDir = findTuscanyInstallDir(bundleContext.getBundle());
- List<URL> urls =
- JarFileFinder.findJarFiles(tuscanyInstallDir, new JarFileFinder.StandAloneJARFileNameFilter());
+ urls = JarFileFinder.findJarFiles(tuscanyInstallDir, new JarFileFinder.StandAloneJARFileNameFilter());
+ }
for (URL url : urls) {
File file = new File(url.toURI());
@@ -254,11 +265,11 @@ public class LauncherBundleActivator implements BundleActivator, Constants, Bund
}
return null;
}
-
+
private String getFileName(URL url) {
String name = url.getPath();
int index = name.lastIndexOf('/');
- return name.substring(index+1);
+ return name.substring(index + 1);
}
private void addFileToJar(URL file, JarOutputStream jarOut) throws IOException {
@@ -314,7 +325,7 @@ public class LauncherBundleActivator implements BundleActivator, Constants, Bund
InputStream in = mf.openStream();
manifest.read(in);
in.close();
- } catch(IOException e) {
+ } catch (IOException e) {
// Ignore
}
}