From 46e1287ec60f6f184d580282bc931cb3164d47da Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 10 Nov 2009 17:46:50 +0000 Subject: Turn the module into a webapp git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834562 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/provision/ExtensionIntrospector.java | 36 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'sandbox/rfeng/tuscany-provisioning/src/main/java/org/apache/tuscany/sca/provision/ExtensionIntrospector.java') 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> map = introspector.getDependencies(args); -- cgit v1.2.3