Author: markt Date: Mon Sep 8 18:34:39 2014 New Revision: 1623456 URL: http://svn.apache.org/r1623456 Log: Extract common code into a new method to reduce duplication identified by Simian.
Modified: tomcat/trunk/java/org/apache/el/lang/ELArithmetic.java Modified: tomcat/trunk/java/org/apache/el/lang/ELArithmetic.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/lang/ELArithmetic.java?rev=1623456&r1=1623455&r2=1623456&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/lang/ELArithmetic.java (original) +++ tomcat/trunk/java/org/apache/el/lang/ELArithmetic.java Mon Sep 8 18:34:39 2014 @@ -249,23 +249,11 @@ public abstract class ELArithmetic { private static final Long ZERO = Long.valueOf(0); public static final Number add(final Object obj0, final Object obj1) { - if (obj0 == null && obj1 == null) { + final ELArithmetic delegate = findDelegate(obj0, obj1); + if (delegate == null) { return Long.valueOf(0); } - final ELArithmetic delegate; - if (BIGDECIMAL.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else if (DOUBLE.matches(obj0, obj1)) { - if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else - delegate = DOUBLE; - } else if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGINTEGER; - else - delegate = LONG; - Number num0 = delegate.coerce(obj0); Number num1 = delegate.coerce(obj1); @@ -294,23 +282,11 @@ public abstract class ELArithmetic { } public static final Number subtract(final Object obj0, final Object obj1) { - if (obj0 == null && obj1 == null) { + final ELArithmetic delegate = findDelegate(obj0, obj1); + if (delegate == null) { return Long.valueOf(0); } - final ELArithmetic delegate; - if (BIGDECIMAL.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else if (DOUBLE.matches(obj0, obj1)) { - if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else - delegate = DOUBLE; - } else if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGINTEGER; - else - delegate = LONG; - Number num0 = delegate.coerce(obj0); Number num1 = delegate.coerce(obj1); @@ -337,29 +313,37 @@ public abstract class ELArithmetic { } public static final Number multiply(final Object obj0, final Object obj1) { - if (obj0 == null && obj1 == null) { + final ELArithmetic delegate = findDelegate(obj0, obj1); + if (delegate == null) { return Long.valueOf(0); } - final ELArithmetic delegate; - if (BIGDECIMAL.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else if (DOUBLE.matches(obj0, obj1)) { - if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGDECIMAL; - else - delegate = DOUBLE; - } else if (BIGINTEGER.matches(obj0, obj1)) - delegate = BIGINTEGER; - else - delegate = LONG; - Number num0 = delegate.coerce(obj0); Number num1 = delegate.coerce(obj1); return delegate.multiply(num0, num1); } + private static ELArithmetic findDelegate(final Object obj0, final Object obj1) { + if (obj0 == null && obj1 == null) { + return null; + } + + if (BIGDECIMAL.matches(obj0, obj1)) { + return BIGDECIMAL; + } else if (DOUBLE.matches(obj0, obj1)) { + if (BIGINTEGER.matches(obj0, obj1)) { + return BIGDECIMAL; + } else { + return DOUBLE; + } + } else if (BIGINTEGER.matches(obj0, obj1)) { + return BIGINTEGER; + } else { + return LONG; + } + } + public static final boolean isNumber(final Object obj) { return (obj != null && isNumberType(obj.getClass())); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org