[jboss-cvs] JBossAS SVN: r64110 - projects/aop/trunk/aop/src/main/org/jboss/aop/metadata.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 18 05:46:33 EDT 2007
Author: kabir.khan at jboss.com
Date: 2007-07-18 05:46:33 -0400 (Wed, 18 Jul 2007)
New Revision: 64110
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/metadata/MethodMetaData.java
Log:
[JBAOP-378] Make the joinpointgenerator maps "lazy"
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/metadata/MethodMetaData.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/metadata/MethodMetaData.java 2007-07-18 08:39:13 UTC (rev 64109)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/metadata/MethodMetaData.java 2007-07-18 09:46:33 UTC (rev 64110)
@@ -24,12 +24,14 @@
import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.MethodInvocation;
import org.jboss.aop.util.PayloadKey;
+import org.jboss.aop.util.UnmodifiableEmptyCollections;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
*
* @author <a href="mailto:bill at jboss.org">Bill Burke</a>
@@ -38,7 +40,7 @@
*/
public class MethodMetaData implements MetaDataResolver
{
- Map methodMetaData = new ConcurrentHashMap();
+ Map methodMetaData = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
HashMap inexactMatches;
public boolean hasTag(String group)
@@ -72,18 +74,16 @@
addMethodMetaData(method.toString(), tag, attr, value, type, exactMatch);
}
- private void addMethodMetaData(String key, Object tag, Object attr, Object value, PayloadKey type, boolean exactMatch)
+ private synchronized void addMethodMetaData(String key, Object tag, Object attr, Object value, PayloadKey type, boolean exactMatch)
{
- synchronized (methodMetaData)
+ SimpleMetaData methodData = (SimpleMetaData)methodMetaData.get(key);
+ if (methodData == null)
{
- SimpleMetaData methodData = (SimpleMetaData)methodMetaData.get(key);
- if (methodData == null)
- {
- methodData = new SimpleMetaData();
- methodMetaData.put(key, methodData);
- }
- methodData.addMetaData(tag, attr, value, type);
- }
+ methodData = new SimpleMetaData();
+ initMethodMetaDataMap();
+ methodMetaData.put(key, methodData);
+ }
+ methodData.addMetaData(tag, attr, value, type);
manageInexactMatches(key, tag, attr, exactMatch);
}
@@ -212,5 +212,11 @@
return meta.hasTag(tag);
}
-
+ private void initMethodMetaDataMap()
+ {
+ if (methodMetaData == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
+ {
+ methodMetaData = new LinkedHashMap();
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list