[jboss-cvs] JBossAS SVN: r104110 - projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 21 08:28:01 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-04-21 08:28:00 -0400 (Wed, 21 Apr 2010)
New Revision: 104110

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
Log:
[JBREFLECT-112] Cache the TypeInfos that have been delegated to introspection

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2010-04-21 12:15:04 UTC (rev 104109)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2010-04-21 12:28:00 UTC (rev 104110)
@@ -573,9 +573,12 @@
       IntrospectionTypeInfoFactory factory = new IntrospectionTypeInfoFactory();
       return factory.getTypeInfo(name, cl);
    }
-
+   
    /**
     * Reads the type info from the cache
+    * 
+    * @param name the class name
+    * @param classLoaderCache The cached type infos for the loader
     */
    private TypeInfo getFromCache(String name, Map<String, WeakReference<TypeInfo>> classLoaderCache)
    {
@@ -588,10 +591,12 @@
             CtClass clazz = getCtClass(result, false);
             if (clazz != null)
             {
-               if (compare(clazz, (ClassInfo)result))
-                     return result;
+               //Only do this check if it is a Javassist implementation. delegateToIntrospectionImplementation()
+               //loads up Reflect implementations in some cases
+               if (!compare(clazz, (ClassInfo)result))
+                  classLoaderCache.remove(name);
             }
-            classLoaderCache.remove(name);
+            return result;
          }
       }
       return null;




More information about the jboss-cvs-commits mailing list