summaryrefslogtreecommitdiffstats
path: root/sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java')
-rw-r--r--sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java36
1 files changed, 34 insertions, 2 deletions
diff --git a/sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java b/sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java
index b44c0e3089..41e847f791 100644
--- a/sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java
+++ b/sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java
@@ -20,6 +20,9 @@
package org.apache.tuscany.sca.provision;
import java.lang.reflect.Field;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -54,6 +57,8 @@ import org.codehaus.plexus.embed.Embedder;
*/
public class ExtensionIntrospector {
private ExtensionPointRegistry registry;
+ private ClassLoader classLoader;
+
private boolean loaded;
private boolean offline;
private MavenRuntime mavenRuntime = new DefaultMavenRuntime();
@@ -77,8 +82,35 @@ public class ExtensionIntrospector {
* @param registry
*/
public ExtensionIntrospector(ExtensionPointRegistry registry) {
- super();
+ this(registry, null);
+ }
+
+ public ExtensionIntrospector(ExtensionPointRegistry registry, ClassLoader classLoader) {
this.registry = (registry == null) ? new DefaultExtensionPointRegistry() : registry;
+ this.classLoader = (classLoader == null) ? ExtensionIntrospector.class.getClassLoader() : classLoader;
+ }
+
+ public ExtensionIntrospector() {
+ this(null, null);
+ }
+
+ public ExtensionIntrospector(URL distribution) {
+ this(null, createClassLoader(distribution));
+ }
+
+ private static ClassLoader createClassLoader(URL distribution) {
+ String url = distribution.toString();
+ if (!url.endsWith("/")) {
+ url = url + "/";
+ }
+ url = url + "features/tuscany-sca-manifest.jar";
+ URL path = null;
+ try {
+ path = new URL(url);
+ } catch (MalformedURLException e) {
+ throw new IllegalArgumentException(e);
+ }
+ return new URLClassLoader(new URL[] {path}, ExtensionIntrospector.class.getClassLoader());
}
public MavenProject findModule(String extensionType) {
@@ -318,7 +350,7 @@ public class ExtensionIntrospector {
}
public static String generateDojoData(String[] args) throws Exception {
- ExtensionIntrospector introspector = new ExtensionIntrospector(null);
+ ExtensionIntrospector introspector = new ExtensionIntrospector();
introspector.setOffline("true".equalsIgnoreCase(System.getProperty("offline")));
introspector.start();
Map<String, Collection<Artifact>> map = introspector.getDependencies(args);