You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2010/07/27 15:55:05 UTC

svn commit: r979703 - /felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java

Author: fmeschbe
Date: Tue Jul 27 13:55:05 2010
New Revision: 979703

URL: http://svn.apache.org/viewvc?rev=979703&view=rev
Log:
FELIX-2486 Implement isA method using Class.isAssignableFrom

Modified:
    felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java

Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java?rev=979703&r1=979702&r2=979703&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java Tue Jul 27 13:55:05 2010
@@ -240,20 +240,15 @@ public class ClassLoaderJavaClassDescrip
         if ( this.clazz.getName().equals(type) ) {
             return true;
         }
-        return this.testClass(this.clazz, type);
-    }
 
-    protected boolean testClass(Class<?> c, String type) {
-        final Class<?>[] interfaces = c.getInterfaces();
-        for(int i=0; i<interfaces.length; i++) {
-            if ( interfaces[i].getName().equals(type) ) {
-                return true;
-            }
-            if ( this.testClass(interfaces[i], type) ) {
-                return true;
-            }
+        try {
+            Class<?> typeClass = this.clazz.getClassLoader().loadClass( type );
+            return typeClass.isAssignableFrom( this.clazz );
+        } catch (ClassNotFoundException cnfe) {
+            // cannot load the check type through the class' class loader
+            // thus we assume clazz is not a type
+            return false;
         }
-        return false;
     }
 
     /**