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]