[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