Author: wglass
Date: Thu Sep 28 21:59:53 2006
New Revision: 451120

URL: http://svn.apache.org/viewvc?view=rev&rev=451120
Log:
tweaked inner class of method cache.  Related to VELOCITY-453.

Modified:
    
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTMethod.java

Modified: 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
URL: 
http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTMethod.java?view=diff&rev=451120&r1=451119&r2=451120
==============================================================================
--- 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
 (original)
+++ 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
 Thu Sep 28 21:59:53 2006
@@ -19,6 +19,7 @@
 import java.lang.reflect.InvocationTargetException;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.velocity.app.event.EventHandlerUtil;
 import org.apache.velocity.context.InternalContextAdapter;
 import org.apache.velocity.exception.MethodInvocationException;
@@ -326,8 +327,12 @@
 
         public MethodCacheKey(String methodName, Class[] params)
         {
-            this.methodName = methodName;
-            this.params = params;
+            /** 
+             * Should never be initialized with nulls, but to be safe we 
refuse 
+             * to accept them.
+             */
+            this.methodName = (methodName != null) ? methodName : 
StringUtils.EMPTY;
+            this.params = (params != null) ? params : 
ArrayUtils.EMPTY_CLASS_ARRAY;
         }
 
         /**
@@ -336,22 +341,13 @@
         public boolean equals(Object o)
         {
             /** 
-             * null check is not strictly needed (due to sole 
-             * initialization above) but it seems more safe
-             * to include it.
-             */
+             * note we skip the null test for methodName and params
+             * due to the earlier test in the constructor
+             */            
             if (o instanceof MethodCacheKey) 
             {
-                final MethodCacheKey other = (MethodCacheKey) o;
-                if ((params == null) || (other.params == null))
-                {
-                    return params == other.params;
-                }             
-                
-                /**
-                 * similarly, do null check on each array subscript.
-                 */
-                else if (params.length == other.params.length && 
+                final MethodCacheKey other = (MethodCacheKey) o;               
 
+                if (params.length == other.params.length && 
                         methodName.equals(other.methodName)) 
                 {              
                     for (int i = 0; i < params.length; ++i) 
@@ -383,15 +379,9 @@
             int result = 17;
 
             /** 
-             * null check is not strictly needed (due to sole 
-             * initialization above) but it seems more safe to 
-             * include it.
-             */
-            if (params == null)
-            {
-                return result;
-            }
-            
+             * note we skip the null test for methodName and params
+             * due to the earlier test in the constructor
+             */            
             for (int i = 0; i < params.length; ++i)
             {
                 final Class param = params[i];
@@ -401,11 +391,8 @@
                 }
             }
             
-            if (methodName != null)
-            {
-                result = result * 37 + methodName.hashCode();
-            }
-            
+            result = result * 37 + methodName.hashCode();
+
             return result;
         } 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to