[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