[jboss-dev-forums] [Design the new POJO MicroContainer] - Re: UnwrapValueUnitTestCase.testCollectionUnwrap failure on

alesj do-not-reply at jboss.com
Thu Nov 20 09:44:24 EST 2008


"alesj" wrote : 
  | What about if I just change that the key is ClassInfo instead of String?
  | (I've done that locally and all the tests pass)
Actually I think I can drop the whole ClassLoader as key,
since ClassInfo is per ClassLoader if I'm not mistaken.


  | Index: src/main/java/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java
  | ===================================================================
  | --- src/main/java/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java     (revision 79796)
  | +++ src/main/java/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java     (working copy)
  | @@ -55,7 +55,7 @@
  |  public class AbstractBeanInfoFactory implements BeanInfoFactory
  |  {
  |     /** The cache */
  | -   protected Map<ClassLoader, Map<String, Map<BeanAccessMode, BeanInfo>>> cache = new WeakHashMap<ClassLoader, Map<String, Map<BeanAccessMode, BeanInfo>>>();
  | +   protected Map<ClassInfo, Map<BeanAccessMode, BeanInfo>> cache = new WeakHashMap<ClassInfo, Map<BeanAccessMode, BeanInfo>>();
  | 
  |     protected static boolean isGetter(MethodInfo minfo)
  |     {
  | @@ -133,20 +133,14 @@
  | 
  |        synchronized (cache)
  |        {
  | -         ClassLoader cl = classAdapter.getClassLoader();
  |           ClassInfo classInfo = classAdapter.getClassInfo();
  | -         String className = classInfo.getName();
  | -         Map<String, Map<BeanAccessMode, BeanInfo>> map = cache.get(cl);
  | -         Map<BeanAccessMode, BeanInfo> modeMap = null;
  | -         if (map != null)
  | +         //String className = classInfo.getName();
  | +         Map<BeanAccessMode, BeanInfo> modeMap = cache.get(classInfo);
  | +         if (modeMap != null)
  |           {
  | -            modeMap = map.get(className);
  | -            if (modeMap != null)
  | -            {
  | -               BeanInfo info = modeMap.get(accessMode);
  | -               if (info != null)
  | -                  return info;
  | -            }
  | +            BeanInfo info = modeMap.get(accessMode);
  | +            if (info != null)
  | +               return info;
  |           }
  | 
  |           Set<ConstructorInfo> constructors = getConstructors(classInfo);
  | @@ -159,16 +153,9 @@
  |           Set<EventInfo> events = getEvents(classInfo);
  | 
  |           BeanInfo result = createBeanInfo(classAdapter, accessMode, properties, constructors, methods, events);
  | -         if (map == null)
  | -         {
  | -            map = new WeakValueHashMap<String, Map<BeanAccessMode, BeanInfo>>();
  | -            cache.put(cl, map);
  | -         }
  |           if (modeMap == null)
  | -         {
  |              modeMap = new WeakValueHashMap<BeanAccessMode, BeanInfo>();
  | -            map.put(className, modeMap);
  | -         }
  | +
  |           modeMap.put(accessMode, result);
  |           return result;
  |        }
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4190911#4190911

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4190911



More information about the jboss-dev-forums mailing list