[jboss-cvs] JBossAS SVN: r103147 - projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/web/plugins.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Mar 29 10:50:49 EDT 2010
Author: alesj
Date: 2010-03-29 10:50:48 -0400 (Mon, 29 Mar 2010)
New Revision: 103147
Modified:
projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/web/plugins/HierarchyTypeVisitor.java
Log:
Visit sub types.
Modified: projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/web/plugins/HierarchyTypeVisitor.java
===================================================================
--- projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/web/plugins/HierarchyTypeVisitor.java 2010-03-29 14:47:56 UTC (rev 103146)
+++ projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/web/plugins/HierarchyTypeVisitor.java 2010-03-29 14:50:48 UTC (rev 103147)
@@ -28,6 +28,8 @@
import org.jboss.classloading.spi.visitor.ResourceContext;
import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.InterfaceInfo;
+import org.jboss.reflect.spi.TypeInfo;
import org.jboss.scanning.plugins.helpers.ResourceOwnerFinder;
import org.jboss.scanning.plugins.visitor.ReflectProvider;
import org.jboss.scanning.plugins.visitor.ReflectResourceVisitor;
@@ -41,6 +43,7 @@
{
private ResourceOwnerFinder finder;
private DefaultResourcesIndex index;
+ private TypeInfo OBJECT;
public HierarchyTypeVisitor(ReflectProvider provider, ResourceOwnerFinder finder, DefaultResourcesIndex index)
{
@@ -62,6 +65,38 @@
protected void handleClass(ResourceContext resource, ClassInfo classInfo) throws Exception
{
URL ownerURL = finder.findOwnerURL(resource);
- // TODO -- handle hierarchy
+ String path = ownerURL.getPath();
+ handleInterfaces(path, classInfo, classInfo); // handle target's interfaces
+ recurse(path, classInfo, classInfo.getSuperclass()); // recurse on super class
}
+
+ private void recurse(String path, final ClassInfo ci, ClassInfo sub)
+ {
+ if (sub == null)
+ return;
+
+ if (OBJECT == null)
+ OBJECT = sub.getTypeInfoFactory().getTypeInfo(Object.class);
+
+ if (sub == OBJECT) // no need to index Object sub-types
+ return;
+
+ index.putInfo(path, ci, sub); // sub on ref
+ handleInterfaces(path, ci, sub); // sub on ref's interfaces
+
+ // recurse
+ recurse(path, ci, sub.getSuperclass());
+ }
+
+ private void handleInterfaces(String path, ClassInfo ci, ClassInfo ref)
+ {
+ InterfaceInfo[] ifaces = ref.getInterfaces();
+ if (ifaces != null)
+ {
+ for (InterfaceInfo ii : ifaces)
+ {
+ recurse(path, ci, ii); // recurse on interface
+ }
+ }
+ }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list