diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-10 17:46:50 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-10 17:46:50 +0000 |
commit | 46e1287ec60f6f184d580282bc931cb3164d47da (patch) | |
tree | 65c01a2def8e9b0febe80314402f86ba4a50d197 /sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java | |
parent | 1ec6782608ae0402055e26bcf5a4b3713f899926 (diff) |
Turn the module into a webapp
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834562 13f79535-47bb-0310-9956-ffa450edef68
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.java | 36 |
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); |