[jboss-cvs] JBossAS SVN: r76136 - in projects/jboss-mdr/trunk/src: main/org/jboss/metadata/plugins/context and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 23 10:47:07 EDT 2008
Author: adrian at jboss.org
Date: 2008-07-23 10:47:07 -0400 (Wed, 23 Jul 2008)
New Revision: 76136
Modified:
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/CacheFactory.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentHashMapCache.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentLRUCachePolicyFactory.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/context/CachingMetaDataContext.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/loader/reflection/AnnotatedElementMetaDataLoader.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorParametersSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java
projects/jboss-mdr/trunk/src/tests/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java
Log:
[JBMDR-28] - Signature optimization
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/CacheFactory.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/CacheFactory.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/CacheFactory.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -39,6 +39,8 @@
/**
* Create cache.
*
+ * @param <K> the key class
+ * @param <V> the value class
* @param keyClass the key class
* @param valueClass the value class
* @param rootFqn the root fqn
@@ -49,6 +51,7 @@
/**
* Create cache.
*
+ * @param <V> the value class
* @param valueClass the value class
* @param rootFqn the root fqn
* @return new cache instance
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentHashMapCache.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentHashMapCache.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentHashMapCache.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -27,6 +27,8 @@
/**
* Simple map backed-up cache.
*
+ * @param <K> the key class
+ * @param <V> the value class
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
public class ConcurrentHashMapCache<K, V> implements Cache<K, V>
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentLRUCachePolicyFactory.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentLRUCachePolicyFactory.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/cache/ConcurrentLRUCachePolicyFactory.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -55,6 +55,7 @@
super(min, max);
}
+ @SuppressWarnings("unchecked")
protected Map createMap()
{
return new ConcurrentHashMap();
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/context/CachingMetaDataContext.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/context/CachingMetaDataContext.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/context/CachingMetaDataContext.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -48,9 +48,11 @@
public class CachingMetaDataContext extends AbstractMetaDataContext
{
/** The annotations */
+ @SuppressWarnings("unchecked")
private volatile Cache<String, AnnotationItem> annotations;
/** MetaData by name */
+ @SuppressWarnings("unchecked")
private volatile Cache<String, MetaDataItem> metaDataByName;
/** All annotations */
@@ -192,7 +194,7 @@
if (annotations != null)
{
- AnnotationItem<T> result = (AnnotationItem) annotations.get(annotationName);
+ AnnotationItem<T> result = annotations.get(annotationName);
if (result != null)
{
if (result.isValid())
@@ -244,7 +246,7 @@
if (metaDataByName != null)
{
- MetaDataItem<T> result = (MetaDataItem) metaDataByName.get(name);
+ MetaDataItem<T> result = metaDataByName.get(name);
if (result != null)
{
if (result.isValid())
@@ -385,7 +387,7 @@
*
* @param cache the cache to clear
*/
- protected void clearCache(Cache cache)
+ protected void clearCache(Cache<?, ?> cache)
{
if (cache != null)
cache.clear();
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/loader/reflection/AnnotatedElementMetaDataLoader.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/loader/reflection/AnnotatedElementMetaDataLoader.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/plugins/loader/reflection/AnnotatedElementMetaDataLoader.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -123,9 +123,12 @@
Class<?> clazz = Class.class.cast(annotated);
if (signature instanceof ConstructorSignature)
{
+ ConstructorSignature constructorSignature = (ConstructorSignature) signature;
try
{
- Constructor<?> constructor = clazz.getConstructor(signature.getParametersTypes(clazz));
+ Constructor<?> constructor = constructorSignature.getConstructor();
+ if (constructor == null)
+ constructor = clazz.getConstructor(signature.getParametersTypes(clazz));
return new AnnotatedElementMetaDataLoader(constructor);
}
catch (NoSuchMethodException e)
@@ -135,9 +138,12 @@
}
else if (signature instanceof MethodSignature)
{
+ MethodSignature methodSignature = (MethodSignature) signature;
try
{
- Method method = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
+ Method method = methodSignature.getMethod();
+ if (method == null)
+ method = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
return new AnnotatedElementMetaDataLoader(method);
}
catch (NoSuchMethodException e)
@@ -147,12 +153,14 @@
}
else if (signature instanceof MethodParametersSignature)
{
+ MethodParametersSignature methodParametersSignature = (MethodParametersSignature) signature;
try
{
- Method method = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
+ Method method = methodParametersSignature.getMethod();
+ if (method == null)
+ method = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
Annotation[][] paramAnnotations = method.getParameterAnnotations();
- MethodParametersSignature sig = (MethodParametersSignature) signature;
- return new SimpleMetaDataLoader(paramAnnotations[sig.getParam()]);
+ return new SimpleMetaDataLoader(paramAnnotations[methodParametersSignature.getParam()]);
}
catch (NoSuchMethodException e)
{
@@ -161,12 +169,14 @@
}
else if (signature instanceof ConstructorParametersSignature)
{
+ ConstructorParametersSignature constructorParametersSignature = (ConstructorParametersSignature) signature;
try
{
- Constructor constructor = clazz.getConstructor(signature.getParametersTypes(clazz));
+ Constructor<?> constructor = constructorParametersSignature.getConstructor();
+ if (constructor == null)
+ constructor = clazz.getConstructor(signature.getParametersTypes(clazz));
Annotation[][] paramAnnotations = constructor.getParameterAnnotations();
- ConstructorParametersSignature sig = (ConstructorParametersSignature) signature;
- return new SimpleMetaDataLoader(paramAnnotations[sig.getParam()]);
+ return new SimpleMetaDataLoader(paramAnnotations[constructorParametersSignature.getParam()]);
}
catch (NoSuchMethodException e)
{
@@ -175,7 +185,10 @@
}
else if (signature instanceof FieldSignature)
{
- Field field = ReflectionUtils.findField(clazz, signature.getName());
+ FieldSignature fieldSignature = (FieldSignature) signature;
+ Field field = fieldSignature.getField();
+ if (field == null)
+ field = ReflectionUtils.findField(clazz, signature.getName());
return field != null ? new AnnotatedElementMetaDataLoader(field) : null;
}
}
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorParametersSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorParametersSignature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorParametersSignature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -32,6 +32,9 @@
*/
public class ConstructorParametersSignature extends ParametersSignature
{
+ /** The constructor */
+ private Constructor<?> constructor;
+
/**
* Create a new Signature.
*
@@ -60,9 +63,10 @@
* @param constructor the constructor
* @param param the parameter number
*/
- public ConstructorParametersSignature(Constructor constructor, int param)
+ public ConstructorParametersSignature(Constructor<?> constructor, int param)
{
super(param, constructor.getParameterTypes());
+ this.constructor = constructor;
}
/**
@@ -75,4 +79,14 @@
{
super(param, convertParameterTypes(constructor.getParameterTypes()));
}
+
+ /**
+ * Get the constructor.
+ *
+ * @return the constructor (could be null if not created using a constructor .
+ */
+ public Constructor<?> getConstructor()
+ {
+ return constructor;
+ }
}
\ No newline at end of file
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -33,6 +33,9 @@
*/
public class ConstructorSignature extends Signature
{
+ /** The constructor */
+ private Constructor<?> constructor;
+
/**
* Create a new Signature.
*
@@ -60,7 +63,8 @@
*/
public ConstructorSignature(Constructor<?> constructor)
{
- super(constructor.getParameterTypes());
+ super((Class<?>[]) null);
+ this.constructor = constructor;
}
/**
@@ -72,4 +76,22 @@
{
super(convertParameterTypes(constructor.getParameterTypes()));
}
+
+ /**
+ * Get the constructor.
+ *
+ * @return the constructor (could be null if not created using a constructor .
+ */
+ public Constructor<?> getConstructor()
+ {
+ return constructor;
+ }
+
+ @Override
+ protected Class<?>[] getParameterTypes()
+ {
+ if (constructor != null)
+ return constructor.getParameterTypes();
+ return super.getParameterTypes();
+ }
}
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -33,6 +33,9 @@
*/
public class FieldSignature extends Signature
{
+ /** The field */
+ private Field field;
+
/**
* Create a new Signature.
*
@@ -51,6 +54,7 @@
public FieldSignature(Field field)
{
super(field.getName());
+ this.field = field;
}
/**
@@ -62,4 +66,14 @@
{
super(field.getName());
}
+
+ /**
+ * Get the field.
+ *
+ * @return the field could be null if not constructed with a field
+ */
+ public Field getField()
+ {
+ return field;
+ }
}
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -34,6 +34,9 @@
*/
public class MethodParametersSignature extends ParametersSignature
{
+ /** The method */
+ private Method method;
+
/**
* Create a new Signature.
*
@@ -67,6 +70,7 @@
public MethodParametersSignature(Method method, int param)
{
super(method.getName(), param, method.getParameterTypes());
+ this.method = method;
}
/**
@@ -79,4 +83,14 @@
{
super(method.getName(), param, convertParameterTypes(method.getParameterTypes()));
}
+
+ /**
+ * Get the method.
+ *
+ * @return the method could be null if not created using a method
+ */
+ public Method getMethod()
+ {
+ return method;
+ }
}
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -33,6 +33,9 @@
*/
public class MethodSignature extends Signature
{
+ /** The method */
+ private Method method;
+
/**
* Create a new Signature.
*
@@ -62,7 +65,8 @@
*/
public MethodSignature(Method method)
{
- super(method.getName(), method.getParameterTypes());
+ super(method.getName(), (Class<?>[]) null);
+ this.method = method;
}
/**
@@ -74,4 +78,22 @@
{
super(method.getName(), convertParameterTypes(method.getParameterTypes()));
}
+
+ /**
+ * Get the method.
+ *
+ * @return the method could be null if not created using a method
+ */
+ public Method getMethod()
+ {
+ return method;
+ }
+
+ @Override
+ protected Class<?>[] getParameterTypes()
+ {
+ if (method != null)
+ return method.getParameterTypes();
+ return super.getParameterTypes();
+ }
}
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -336,17 +336,10 @@
private Signature(String name, Class<?>[] parameterTypes, String[] parameters)
{
this.name = name;
- this.parameters = parameters;
- this.parameterTypes = parameterTypes;
if (name == null)
this.name = NO_NAME;
- if (parameters == null)
- this.parameters = classesToStrings(parameterTypes);
- for (int i = 0; i < this.parameters.length; ++i)
- {
- if (this.parameters[i] == null)
- throw new IllegalArgumentException("Null parameter, index: " + i);
- }
+ this.parameters = parameters;
+ this.parameterTypes = parameterTypes;
}
/**
@@ -366,10 +359,22 @@
*/
public String[] getParameters()
{
+ if (parameters == null)
+ parameters = classesToStrings(getParameterTypes());
return parameters;
}
-
+
/**
+ * Get the parameter types (for override by sub-classes)
+ *
+ * @return the parameters types
+ */
+ protected Class<?>[] getParameterTypes()
+ {
+ return parameterTypes;
+ }
+
+ /**
* Returns the parameter types.
*
* @param clazz the reference class
@@ -378,7 +383,11 @@
public Class<?>[] getParametersTypes(Class<?> clazz)
{
if (parameterTypes == null)
- return stringsToClasses(clazz, parameters);
+ {
+ parameterTypes = getParameterTypes();
+ if (parameterTypes == null)
+ parameterTypes = stringsToClasses(clazz, parameters);
+ }
return parameterTypes;
}
@@ -394,12 +403,15 @@
if (getName().equals(other.getName()) == false)
return false;
- if (parameters.length != other.parameters.length)
+ String[] thisParameters = getParameters();
+ String[] otherParameters = other.getParameters();
+
+ if (thisParameters.length != otherParameters.length)
return false;
- for (int i = 0; i < parameters.length; ++i)
+ for (int i = 0; i < thisParameters.length; ++i)
{
- if (parameters[i].equals(other.parameters[i]) == false)
+ if (thisParameters[i].equals(otherParameters[i]) == false)
return false;
}
return true;
@@ -427,7 +439,8 @@
protected void internalToString(StringBuilder builder)
{
if (name != null)
- builder.append(name);
+ builder.append(getName());
+ String[] parameters = getParameters();
if (parameters != null)
builder.append(Arrays.asList(parameters));
}
Modified: projects/jboss-mdr/trunk/src/tests/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java
===================================================================
--- projects/jboss-mdr/trunk/src/tests/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java 2008-07-23 14:33:04 UTC (rev 76135)
+++ projects/jboss-mdr/trunk/src/tests/org/jboss/test/metadata/shared/ComponentBasicAnnotationsTest.java 2008-07-23 14:47:07 UTC (rev 76136)
@@ -60,41 +60,6 @@
protected abstract MetaData setupConstructorParams();
- public void testFieldNotFound() throws Exception
- {
- MetaData metaData = setupField();
- metaData = metaData.getComponentMetaData(new FieldSignature("notFound"));
- assertNull(metaData);
- }
-
- public void testConstructorNotFound() throws Exception
- {
- MetaData metaData = setupConstructor();
- metaData = metaData.getComponentMetaData(new ConstructorSignature(Void.class));
- assertNull(metaData);
- }
-
- public void testMethodNotFound() throws Exception
- {
- MetaData metaData = setupMethod();
- metaData = metaData.getComponentMetaData(new MethodSignature("notFound"));
- assertNull(metaData);
- }
-
- public void testMethodParamsNotFound() throws Exception
- {
- MetaData metaData = setupMethodParams();
- metaData = metaData.getComponentMetaData(new MethodParametersSignature("notFound", 0, Void.class));
- assertNull(metaData);
- }
-
- public void testConstructorParamsNotFound() throws Exception
- {
- MetaData metaData = setupConstructorParams();
- metaData = metaData.getComponentMetaData(new ConstructorParametersSignature(0, Void.class));
- assertNull(metaData);
- }
-
public void testFieldEmpty() throws Exception
{
MetaData metaData = setupField();
More information about the jboss-cvs-commits
mailing list