[jboss-cvs] JBossAS SVN: r103959 - in projects/scanning/trunk: indexer/src/main/java/org/jboss/scanning/indexer/core and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 14 08:01:19 EDT 2010
Author: alesj
Date: 2010-04-14 08:01:18 -0400 (Wed, 14 Apr 2010)
New Revision: 103959
Removed:
projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/providers/
Modified:
projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/Main.java
projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/core/ScanUtils.java
projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/annotations/plugins/AnnotationsScanningPlugin.java
projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hierarchy/plugins/HierarchyIndexScanningPlugin.java
projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/visitor/IntrospectionReflectProvider.java
Log:
Simplify pluing usage in indexer.
Modified: projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/Main.java
===================================================================
--- projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/Main.java 2010-04-14 11:52:03 UTC (rev 103958)
+++ projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/Main.java 2010-04-14 12:01:18 UTC (rev 103959)
@@ -28,7 +28,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.jboss.scanning.indexer.core.PluginProvider;
import org.jboss.scanning.indexer.core.ScanUtils;
/**
@@ -69,7 +68,7 @@
urls[i] = new File(args[i + 1]).toURI().toURL();
// TODO -- add scanning plugins
- ScanUtils.scan(input, urls, Collections.<PluginProvider>emptySet());
+ ScanUtils.scan(input, urls, Collections.<String>emptySet());
}
else
{
Modified: projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/core/ScanUtils.java
===================================================================
--- projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/core/ScanUtils.java 2010-04-14 11:52:03 UTC (rev 103958)
+++ projects/scanning/trunk/indexer/src/main/java/org/jboss/scanning/indexer/core/ScanUtils.java 2010-04-14 12:01:18 UTC (rev 103959)
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
+import java.lang.reflect.Constructor;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashSet;
@@ -89,7 +90,7 @@
* @param pluginProviders the providers for plugins used while scanning
* @throws Exception for any error
*/
- public static void scan(File input, URL[] cp, Set<PluginProvider> pluginProviders) throws Exception
+ public static void scan(File input, URL[] cp, Set<String> pluginProviders) throws Exception
{
URL root = input.toURI().toURL();
URL[] urls = new URL[cp.length + 1];
@@ -98,8 +99,8 @@
URLClassLoader ucl = new URLClassLoader(urls, ScanUtils.class.getClassLoader());
Set<ScanningPlugin> plugins = new HashSet<ScanningPlugin>();
- for (PluginProvider provider : pluginProviders)
- plugins.add(provider.create(ucl));
+ for (String provider : pluginProviders)
+ plugins.add(createPlugin(provider, ucl));
DefaultScanner scaner = new DefaultScanner(ucl, root);
scaner.setPlugins(plugins);
@@ -117,4 +118,41 @@
FileUtil.compress(jar, output);
FileUtil.recursiveDelete(jar);
}
+
+ /**
+ * Create plugin.
+ *
+ * If the provider is actual plugin,
+ * it must take classloader as a single parameter with constructor.
+ *
+ * @param provider the provider; can be actual plugin or intermediate PluginProvider
+ * @param ucl the current CL
+ * @return new plugin instance
+ * @throws Exception for any error
+ */
+ private static ScanningPlugin createPlugin(String provider, URLClassLoader ucl) throws Exception
+ {
+ Class<?> clazz = ucl.loadClass(provider);
+ if (ScanningPlugin.class.isAssignableFrom(clazz))
+ {
+ try
+ {
+ // let's first try no-arg ctor
+ return (ScanningPlugin) clazz.newInstance();
+ }
+ catch (Exception e)
+ {
+ // fall back to CL arg ctor
+ Constructor<?> ctor = clazz.getDeclaredConstructor(ClassLoader.class);
+ return (ScanningPlugin) ctor.newInstance(ucl);
+ }
+ }
+ else if (PluginProvider.class.isAssignableFrom(clazz))
+ {
+ PluginProvider pp = (PluginProvider) clazz.newInstance();
+ return pp.create(ucl);
+ }
+ else
+ throw new IllegalArgumentException("Cannot create plugin from " + provider);
+ }
}
Modified: projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/annotations/plugins/AnnotationsScanningPlugin.java
===================================================================
--- projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/annotations/plugins/AnnotationsScanningPlugin.java 2010-04-14 11:52:03 UTC (rev 103958)
+++ projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/annotations/plugins/AnnotationsScanningPlugin.java 2010-04-14 12:01:18 UTC (rev 103959)
@@ -26,7 +26,9 @@
import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.classloading.spi.visitor.ResourceVisitor;
import org.jboss.scanning.annotations.spi.AnnotationIndex;
+import org.jboss.scanning.plugins.helpers.ClassResourceOwnerFinder;
import org.jboss.scanning.plugins.helpers.ResourceOwnerFinder;
+import org.jboss.scanning.plugins.visitor.IntrospectionReflectProvider;
import org.jboss.scanning.plugins.visitor.ReflectProvider;
import org.jboss.scanning.spi.helpers.AbstractScanningPlugin;
@@ -42,6 +44,11 @@
/** The visitor */
private final ResourceVisitor visitor;
+ public AnnotationsScanningPlugin(ClassLoader cl)
+ {
+ this(IntrospectionReflectProvider.INSTANCE, ClassResourceOwnerFinder.INSTANCE, cl);
+ }
+
public AnnotationsScanningPlugin(ReflectProvider provider, ResourceOwnerFinder finder, ClassLoader cl)
{
repository = new DefaultAnnotationRepository(cl);
Modified: projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hierarchy/plugins/HierarchyIndexScanningPlugin.java
===================================================================
--- projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hierarchy/plugins/HierarchyIndexScanningPlugin.java 2010-04-14 11:52:03 UTC (rev 103958)
+++ projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hierarchy/plugins/HierarchyIndexScanningPlugin.java 2010-04-14 12:01:18 UTC (rev 103959)
@@ -27,7 +27,9 @@
import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.classloading.spi.visitor.ResourceVisitor;
import org.jboss.scanning.hierarchy.spi.HierarchyIndex;
+import org.jboss.scanning.plugins.helpers.ClassResourceOwnerFinder;
import org.jboss.scanning.plugins.helpers.ResourceOwnerFinder;
+import org.jboss.scanning.plugins.visitor.IntrospectionReflectProvider;
import org.jboss.scanning.plugins.visitor.ReflectProvider;
import org.jboss.scanning.spi.helpers.AbstractScanningPlugin;
@@ -43,6 +45,11 @@
/** The visitor */
private final ResourceVisitor visitor;
+ public HierarchyIndexScanningPlugin()
+ {
+ this(IntrospectionReflectProvider.INSTANCE, ClassResourceOwnerFinder.INSTANCE);
+ }
+
public HierarchyIndexScanningPlugin(ReflectProvider provider, ResourceOwnerFinder finder)
{
hierarchy = new HierarchyIndexImpl();
Modified: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/visitor/IntrospectionReflectProvider.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/visitor/IntrospectionReflectProvider.java 2010-04-14 11:52:03 UTC (rev 103958)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/visitor/IntrospectionReflectProvider.java 2010-04-14 12:01:18 UTC (rev 103959)
@@ -33,8 +33,14 @@
*/
public class IntrospectionReflectProvider implements ReflectProvider
{
+ public static final ReflectProvider INSTANCE = new IntrospectionReflectProvider();
+
private IntrospectionTypeInfoFactory factory = new IntrospectionTypeInfoFactory();
+ private IntrospectionReflectProvider()
+ {
+ }
+
public TypeInfo getTypeInfo(ResourceContext resource) throws Throwable
{
return factory.getTypeInfo(resource.loadClass());
More information about the jboss-cvs-commits
mailing list