Author: markt
Date: Fri Dec  5 17:33:58 2014
New Revision: 1643366

URL: http://svn.apache.org/r1643366
Log:
Part 2 of fix for
https://issues.apache.org/bugzilla/show_bug.cgi?id=57309
Run all the type specific conversions through the ELResolver

Modified:
    tomcat/trunk/java/org/apache/el/lang/ELSupport.java
    tomcat/trunk/java/org/apache/el/parser/AstAnd.java
    tomcat/trunk/java/org/apache/el/parser/AstChoice.java
    tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java
    tomcat/trunk/java/org/apache/el/parser/AstConcatenation.java
    tomcat/trunk/java/org/apache/el/parser/AstEqual.java
    tomcat/trunk/java/org/apache/el/parser/AstGreaterThan.java
    tomcat/trunk/java/org/apache/el/parser/AstGreaterThanEqual.java
    tomcat/trunk/java/org/apache/el/parser/AstLessThan.java
    tomcat/trunk/java/org/apache/el/parser/AstLessThanEqual.java
    tomcat/trunk/java/org/apache/el/parser/AstNegative.java
    tomcat/trunk/java/org/apache/el/parser/AstNot.java
    tomcat/trunk/java/org/apache/el/parser/AstNotEqual.java
    tomcat/trunk/java/org/apache/el/parser/AstOr.java
    tomcat/trunk/java/org/apache/el/stream/Stream.java
    tomcat/trunk/test/org/apache/el/TestELEvaluation.java
    tomcat/trunk/test/org/apache/el/lang/TestELSupport.java
    tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java

Modified: tomcat/trunk/java/org/apache/el/lang/ELSupport.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/lang/ELSupport.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/lang/ELSupport.java (original)
+++ tomcat/trunk/java/org/apache/el/lang/ELSupport.java Fri Dec  5 17:33:58 2014
@@ -72,7 +72,7 @@ public class ELSupport {
      * Compare two objects, after coercing to the same type if appropriate.
      *
      * If the objects are identical, or they are equal according to
-     * {@link #equals(Object, Object)} then return 0.
+     * {@link #equals(ELContext, Object, Object)} then return 0.
      *
      * If either object is a BigDecimal, then coerce both to BigDecimal first.
      * Similarly for Double(Float), BigInteger, and Long(Integer, Char, Short, 
Byte).
@@ -91,39 +91,40 @@ public class ELSupport {
      * <li>Otherwise null is considered to be lower than anything else.</li>
      * </ul>
      *
+     * @param ctx the context in which this comparison is taking place
      * @param obj0 first object
      * @param obj1 second object
      * @return -1, 0, or 1 if this object is less than, equal to, or greater 
than val.
      * @throws ELException if neither object is Comparable
      * @throws ClassCastException if the objects are not mutually comparable
      */
-    public static final int compare(final Object obj0, final Object obj1)
+    public static final int compare(final ELContext ctx, final Object obj0, 
final Object obj1)
             throws ELException {
-        if (obj0 == obj1 || equals(obj0, obj1)) {
+        if (obj0 == obj1 || equals(ctx, obj0, obj1)) {
             return 0;
         }
         if (isBigDecimalOp(obj0, obj1)) {
-            BigDecimal bd0 = (BigDecimal) coerceToNumber(obj0, 
BigDecimal.class);
-            BigDecimal bd1 = (BigDecimal) coerceToNumber(obj1, 
BigDecimal.class);
+            BigDecimal bd0 = (BigDecimal) coerceToNumber(ctx, obj0, 
BigDecimal.class);
+            BigDecimal bd1 = (BigDecimal) coerceToNumber(ctx, obj1, 
BigDecimal.class);
             return bd0.compareTo(bd1);
         }
         if (isDoubleOp(obj0, obj1)) {
-            Double d0 = (Double) coerceToNumber(obj0, Double.class);
-            Double d1 = (Double) coerceToNumber(obj1, Double.class);
+            Double d0 = (Double) coerceToNumber(ctx, obj0, Double.class);
+            Double d1 = (Double) coerceToNumber(ctx, obj1, Double.class);
             return d0.compareTo(d1);
         }
         if (isBigIntegerOp(obj0, obj1)) {
-            BigInteger bi0 = (BigInteger) coerceToNumber(obj0, 
BigInteger.class);
-            BigInteger bi1 = (BigInteger) coerceToNumber(obj1, 
BigInteger.class);
+            BigInteger bi0 = (BigInteger) coerceToNumber(ctx, obj0, 
BigInteger.class);
+            BigInteger bi1 = (BigInteger) coerceToNumber(ctx, obj1, 
BigInteger.class);
             return bi0.compareTo(bi1);
         }
         if (isLongOp(obj0, obj1)) {
-            Long l0 = (Long) coerceToNumber(obj0, Long.class);
-            Long l1 = (Long) coerceToNumber(obj1, Long.class);
+            Long l0 = (Long) coerceToNumber(ctx, obj0, Long.class);
+            Long l1 = (Long) coerceToNumber(ctx, obj1, Long.class);
             return l0.compareTo(l1);
         }
         if (obj0 instanceof String || obj1 instanceof String) {
-            return coerceToString(obj0).compareTo(coerceToString(obj1));
+            return coerceToString(ctx, obj0).compareTo(coerceToString(ctx, 
obj1));
         }
         if (obj0 instanceof Comparable<?>) {
             @SuppressWarnings("unchecked") // checked above
@@ -147,41 +148,42 @@ public class ELSupport {
      * Similarly for Enum, String, BigDecimal, Double(Float), Long(Integer, 
Short, Byte, Character)
      * Otherwise default to using Object.equals().
      *
+     * @param ctx the context in which this equality test is taking place
      * @param obj0 the first object
      * @param obj1 the second object
      * @return true if the objects are equal
      * @throws ELException if one of the coercion fails
      */
-    public static final boolean equals(final Object obj0, final Object obj1)
+    public static final boolean equals(final ELContext ctx, final Object obj0, 
final Object obj1)
             throws ELException {
         if (obj0 == obj1) {
             return true;
         } else if (obj0 == null || obj1 == null) {
             return false;
         } else if (isBigDecimalOp(obj0, obj1)) {
-            BigDecimal bd0 = (BigDecimal) coerceToNumber(obj0, 
BigDecimal.class);
-            BigDecimal bd1 = (BigDecimal) coerceToNumber(obj1, 
BigDecimal.class);
+            BigDecimal bd0 = (BigDecimal) coerceToNumber(ctx, obj0, 
BigDecimal.class);
+            BigDecimal bd1 = (BigDecimal) coerceToNumber(ctx, obj1, 
BigDecimal.class);
             return bd0.equals(bd1);
         } else if (isDoubleOp(obj0, obj1)) {
-            Double d0 = (Double) coerceToNumber(obj0, Double.class);
-            Double d1 = (Double) coerceToNumber(obj1, Double.class);
+            Double d0 = (Double) coerceToNumber(ctx, obj0, Double.class);
+            Double d1 = (Double) coerceToNumber(ctx, obj1, Double.class);
             return d0.equals(d1);
         } else if (isBigIntegerOp(obj0, obj1)) {
-            BigInteger bi0 = (BigInteger) coerceToNumber(obj0, 
BigInteger.class);
-            BigInteger bi1 = (BigInteger) coerceToNumber(obj1, 
BigInteger.class);
+            BigInteger bi0 = (BigInteger) coerceToNumber(ctx, obj0, 
BigInteger.class);
+            BigInteger bi1 = (BigInteger) coerceToNumber(ctx, obj1, 
BigInteger.class);
             return bi0.equals(bi1);
         } else         if (isLongOp(obj0, obj1)) {
-            Long l0 = (Long) coerceToNumber(obj0, Long.class);
-            Long l1 = (Long) coerceToNumber(obj1, Long.class);
+            Long l0 = (Long) coerceToNumber(ctx, obj0, Long.class);
+            Long l1 = (Long) coerceToNumber(ctx, obj1, Long.class);
             return l0.equals(l1);
         } else if (obj0 instanceof Boolean || obj1 instanceof Boolean) {
-            return coerceToBoolean(obj0, false).equals(coerceToBoolean(obj1, 
false));
+            return coerceToBoolean(ctx, obj0, 
false).equals(coerceToBoolean(ctx, obj1, false));
         } else if (obj0.getClass().isEnum()) {
-            return obj0.equals(coerceToEnum(obj1, obj0.getClass()));
+            return obj0.equals(coerceToEnum(ctx, obj1, obj0.getClass()));
         } else if (obj1.getClass().isEnum()) {
-            return obj1.equals(coerceToEnum(obj0, obj1.getClass()));
+            return obj1.equals(coerceToEnum(ctx, obj0, obj1.getClass()));
         } else if (obj0 instanceof String || obj1 instanceof String) {
-            int lexCompare = 
coerceToString(obj0).compareTo(coerceToString(obj1));
+            int lexCompare = coerceToString(ctx, 
obj0).compareTo(coerceToString(ctx, obj1));
             return (lexCompare == 0) ? true : false;
         } else {
             return obj0.equals(obj1);
@@ -192,8 +194,21 @@ public class ELSupport {
     // keeps them all in one place. There might be a neater / better solution
     // but I couldn't find it
     @SuppressWarnings("unchecked")
-    public static final Enum<?> coerceToEnum(final Object obj,
+    public static final Enum<?> coerceToEnum(final ELContext ctx, final Object 
obj,
             @SuppressWarnings("rawtypes") Class type) {
+
+        if (ctx != null) {
+            boolean originalIsPropertyResolved = ctx.isPropertyResolved();
+            try {
+                Object result = ctx.getELResolver().convertToType(ctx, obj, 
type);
+                if (ctx.isPropertyResolved()) {
+                    return (Enum<?>) result;
+                }
+            } finally {
+                ctx.setPropertyResolved(originalIsPropertyResolved);
+            }
+        }
+
         if (obj == null || "".equals(obj)) {
             return null;
         }
@@ -219,15 +234,28 @@ public class ELSupport {
     /**
      * Convert an object to Boolean.
      * Null and empty string are false.
+     * @param ctx the context in which this conversion is taking place
      * @param obj the object to convert
      * @param primitive is the target a primitive in which case coercion to 
null
      *                  is not permitted
      * @return the Boolean value of the object
      * @throws ELException if object is not Boolean or String
      */
-    public static final Boolean coerceToBoolean(final Object obj,
+    public static final Boolean coerceToBoolean(final ELContext ctx, final 
Object obj,
             boolean primitive) throws ELException {
 
+        if (ctx != null) {
+            boolean originalIsPropertyResolved = ctx.isPropertyResolved();
+            try {
+                Object result = ctx.getELResolver().convertToType(ctx, obj, 
Boolean.class);
+                if (ctx.isPropertyResolved()) {
+                    return (Boolean) result;
+                }
+            } finally {
+                ctx.setPropertyResolved(originalIsPropertyResolved);
+            }
+        }
+
         if (!COERCE_TO_ZERO && !primitive) {
             if (obj == null) {
                 return null;
@@ -248,8 +276,21 @@ public class ELSupport {
                 obj, obj.getClass(), Boolean.class));
     }
 
-    private static final Character coerceToCharacter(final Object obj)
+    private static final Character coerceToCharacter(final ELContext ctx, 
final Object obj)
             throws ELException {
+
+        if (ctx != null) {
+            boolean originalIsPropertyResolved = ctx.isPropertyResolved();
+            try {
+                Object result = ctx.getELResolver().convertToType(ctx, obj, 
Character.class);
+                if (ctx.isPropertyResolved()) {
+                    return (Character) result;
+                }
+            } finally {
+                ctx.setPropertyResolved(originalIsPropertyResolved);
+            }
+        }
+
         if (obj == null || "".equals(obj)) {
             return Character.valueOf((char) 0);
         }
@@ -314,9 +355,21 @@ public class ELSupport {
                 number, number.getClass(), type));
     }
 
-    public static final Number coerceToNumber(final Object obj,
+    public static final Number coerceToNumber(final ELContext ctx, final 
Object obj,
             final Class<?> type) throws ELException {
 
+        if (ctx != null) {
+            boolean originalIsPropertyResolved = ctx.isPropertyResolved();
+            try {
+                Object result = ctx.getELResolver().convertToType(ctx, obj, 
type);
+                if (ctx.isPropertyResolved()) {
+                    return (Number) result;
+                }
+            } finally {
+                ctx.setPropertyResolved(originalIsPropertyResolved);
+            }
+        }
+
         if (!COERCE_TO_ZERO) {
             if (obj == null && !type.isPrimitive()) {
                 return null;
@@ -415,10 +468,24 @@ public class ELSupport {
 
     /**
      * Coerce an object to a string.
+     * @param ctx the context in which this conversion is taking place
      * @param obj the object to convert
      * @return the String value of the object
      */
-    public static final String coerceToString(final Object obj) {
+    public static final String coerceToString(final ELContext ctx, final 
Object obj) {
+
+        if (ctx != null) {
+            boolean originalIsPropertyResolved = ctx.isPropertyResolved();
+            try {
+                Object result = ctx.getELResolver().convertToType(ctx, obj, 
String.class);
+                if (ctx.isPropertyResolved()) {
+                    return (String) result;
+                }
+            } finally {
+                ctx.setPropertyResolved(originalIsPropertyResolved);
+            }
+        }
+
         if (obj == null) {
             return "";
         } else if (obj instanceof String) {
@@ -458,19 +525,19 @@ public class ELSupport {
         }
 
         if (String.class.equals(type)) {
-            return coerceToString(obj);
+            return coerceToString(ctx, obj);
         }
         if (ELArithmetic.isNumberType(type)) {
-            return coerceToNumber(obj, type);
+            return coerceToNumber(ctx, obj, type);
         }
         if (Character.class.equals(type) || Character.TYPE == type) {
-            return coerceToCharacter(obj);
+            return coerceToCharacter(ctx, obj);
         }
         if (Boolean.class.equals(type) || Boolean.TYPE == type) {
-            return coerceToBoolean(obj, Boolean.TYPE == type);
+            return coerceToBoolean(ctx, obj, Boolean.TYPE == type);
         }
         if (type.isEnum()) {
-            return coerceToEnum(obj, type);
+            return coerceToEnum(ctx, obj, type);
         }
 
         // new to spec

Modified: tomcat/trunk/java/org/apache/el/parser/AstAnd.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstAnd.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstAnd.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstAnd.java Fri Dec  5 17:33:58 2014
@@ -35,12 +35,12 @@ public final class AstAnd extends Boolea
     public Object getValue(EvaluationContext ctx)
             throws ELException {
         Object obj = children[0].getValue(ctx);
-        Boolean b = coerceToBoolean(obj, true);
+        Boolean b = coerceToBoolean(ctx, obj, true);
         if (!b.booleanValue()) {
             return b;
         }
         obj = children[1].getValue(ctx);
-        b = coerceToBoolean(obj, true);
+        b = coerceToBoolean(ctx, obj, true);
         return b;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstChoice.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstChoice.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstChoice.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstChoice.java Fri Dec  5 17:33:58 
2014
@@ -42,7 +42,7 @@ public final class AstChoice extends Sim
     public Object getValue(EvaluationContext ctx)
             throws ELException {
         Object obj0 = this.children[0].getValue(ctx);
-        Boolean b0 = coerceToBoolean(obj0, true);
+        Boolean b0 = coerceToBoolean(ctx, obj0, true);
         return this.children[((b0.booleanValue() ? 1 : 2))].getValue(ctx);
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java 
(original)
+++ tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java Fri Dec  
5 17:33:58 2014
@@ -48,7 +48,7 @@ public final class AstCompositeExpressio
             for (int i = 0; i < this.children.length; i++) {
                 obj = this.children[i].getValue(ctx);
                 if (obj != null) {
-                    sb.append(ELSupport.coerceToString(obj));
+                    sb.append(ELSupport.coerceToString(ctx, obj));
                 }
             }
         }

Modified: tomcat/trunk/java/org/apache/el/parser/AstConcatenation.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstConcatenation.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstConcatenation.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstConcatenation.java Fri Dec  5 
17:33:58 2014
@@ -31,8 +31,8 @@ public class AstConcatenation extends Si
     @Override
     public Object getValue(EvaluationContext ctx) throws ELException {
         // Coerce the two child nodes to string and then concatenate
-        String s1 = coerceToString(children[0].getValue(ctx));
-        String s2 = coerceToString(children[1].getValue(ctx));
+        String s1 = coerceToString(ctx, children[0].getValue(ctx));
+        String s2 = coerceToString(ctx, children[1].getValue(ctx));
         return s1 + s2;
     }
 

Modified: tomcat/trunk/java/org/apache/el/parser/AstEqual.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstEqual.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstEqual.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstEqual.java Fri Dec  5 17:33:58 
2014
@@ -36,6 +36,6 @@ public final class AstEqual extends Bool
             throws ELException {
         Object obj0 = this.children[0].getValue(ctx);
         Object obj1 = this.children[1].getValue(ctx);
-        return Boolean.valueOf(equals(obj0, obj1));
+        return Boolean.valueOf(equals(ctx, obj0, obj1));
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstGreaterThan.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstGreaterThan.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstGreaterThan.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstGreaterThan.java Fri Dec  5 
17:33:58 2014
@@ -42,6 +42,6 @@ public final class AstGreaterThan extend
         if (obj1 == null) {
             return Boolean.FALSE;
         }
-        return (compare(obj0, obj1) > 0) ? Boolean.TRUE : Boolean.FALSE;
+        return (compare(ctx, obj0, obj1) > 0) ? Boolean.TRUE : Boolean.FALSE;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstGreaterThanEqual.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstGreaterThanEqual.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstGreaterThanEqual.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstGreaterThanEqual.java Fri Dec  5 
17:33:58 2014
@@ -42,6 +42,6 @@ public final class AstGreaterThanEqual e
         if (obj0 == null || obj1 == null) {
             return Boolean.FALSE;
         }
-        return (compare(obj0, obj1) >= 0) ? Boolean.TRUE : Boolean.FALSE;
+        return (compare(ctx, obj0, obj1) >= 0) ? Boolean.TRUE : Boolean.FALSE;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstLessThan.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLessThan.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstLessThan.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstLessThan.java Fri Dec  5 17:33:58 
2014
@@ -42,6 +42,6 @@ public final class AstLessThan extends B
         if (obj1 == null) {
             return Boolean.FALSE;
         }
-        return (compare(obj0, obj1) < 0) ? Boolean.TRUE : Boolean.FALSE;
+        return (compare(ctx, obj0, obj1) < 0) ? Boolean.TRUE : Boolean.FALSE;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstLessThanEqual.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLessThanEqual.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstLessThanEqual.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstLessThanEqual.java Fri Dec  5 
17:33:58 2014
@@ -42,6 +42,6 @@ public final class AstLessThanEqual exte
         if (obj0 == null || obj1 == null) {
             return Boolean.FALSE;
         }
-        return (compare(obj0, obj1) <= 0) ? Boolean.TRUE : Boolean.FALSE;
+        return (compare(ctx, obj0, obj1) <= 0) ? Boolean.TRUE : Boolean.FALSE;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstNegative.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstNegative.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstNegative.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstNegative.java Fri Dec  5 17:33:58 
2014
@@ -78,7 +78,7 @@ public final class AstNegative extends S
         if (obj instanceof Byte) {
             return Byte.valueOf((byte) -((Byte) obj).byteValue());
         }
-        Long num = (Long) coerceToNumber(obj, Long.class);
+        Long num = (Long) coerceToNumber(ctx, obj, Long.class);
         return Long.valueOf(-num.longValue());
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstNot.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstNot.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstNot.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstNot.java Fri Dec  5 17:33:58 2014
@@ -41,7 +41,7 @@ public final class AstNot extends Simple
     public Object getValue(EvaluationContext ctx)
             throws ELException {
         Object obj = this.children[0].getValue(ctx);
-        Boolean b = coerceToBoolean(obj, true);
+        Boolean b = coerceToBoolean(ctx, obj, true);
         return Boolean.valueOf(!b.booleanValue());
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstNotEqual.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstNotEqual.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstNotEqual.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstNotEqual.java Fri Dec  5 17:33:58 
2014
@@ -36,6 +36,6 @@ public final class AstNotEqual extends B
             throws ELException {
         Object obj0 = this.children[0].getValue(ctx);
         Object obj1 = this.children[1].getValue(ctx);
-        return Boolean.valueOf(!equals(obj0, obj1));
+        return Boolean.valueOf(!equals(ctx, obj0, obj1));
     }
 }

Modified: tomcat/trunk/java/org/apache/el/parser/AstOr.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstOr.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstOr.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstOr.java Fri Dec  5 17:33:58 2014
@@ -35,12 +35,12 @@ public final class AstOr extends Boolean
     public Object getValue(EvaluationContext ctx)
             throws ELException {
         Object obj = this.children[0].getValue(ctx);
-        Boolean b = coerceToBoolean(obj, true);
+        Boolean b = coerceToBoolean(ctx, obj, true);
         if (b.booleanValue()) {
             return b;
         }
         obj = this.children[1].getValue(ctx);
-        b = coerceToBoolean(obj, true);
+        b = coerceToBoolean(ctx, obj, true);
         return b;
     }
 }

Modified: tomcat/trunk/java/org/apache/el/stream/Stream.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/stream/Stream.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/stream/Stream.java (original)
+++ tomcat/trunk/java/org/apache/el/stream/Stream.java Fri Dec  5 17:33:58 2014
@@ -48,7 +48,7 @@ public class Stream {
             protected void findNext() {
                 while (iterator.hasNext()) {
                     Object obj = iterator.next();
-                    if (ELSupport.coerceToBoolean(le.invoke(obj),
+                    if (ELSupport.coerceToBoolean(null, le.invoke(obj),
                             true).booleanValue()) {
                         next = obj;
                         foundNext = true;
@@ -450,10 +450,10 @@ public class Stream {
 
         while (iterator.hasNext()) {
             Object obj = iterator.next();
-            if (isMax && ELSupport.coerceToNumber(le.invoke(obj, result),
+            if (isMax && ELSupport.coerceToNumber(null, le.invoke(obj, result),
                     Integer.class).intValue() > 0) {
                 result = obj;
-            } else if (!isMax && ELSupport.coerceToNumber(le.invoke(obj, 
result),
+            } else if (!isMax && ELSupport.coerceToNumber(null, le.invoke(obj, 
result),
                     Integer.class).intValue() < 0) {
                 result = obj;
             }
@@ -479,7 +479,7 @@ public class Stream {
         @Override
         public int compare(Object o1, Object o2) {
             return ELSupport.coerceToNumber(
-                    le.invoke(o1, o2), Integer.class).intValue();
+                    null, le.invoke(o1, o2), Integer.class).intValue();
         }
     }
 

Modified: tomcat/trunk/test/org/apache/el/TestELEvaluation.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestELEvaluation.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestELEvaluation.java (original)
+++ tomcat/trunk/test/org/apache/el/TestELEvaluation.java Fri Dec  5 17:33:58 
2014
@@ -170,8 +170,8 @@ public class TestELEvaluation {
     }
 
     private void compareBoth(String msg, int expected, Object o1, Object o2){
-        int i1 = ELSupport.compare(o1, o2);
-        int i2 = ELSupport.compare(o2, o1);
+        int i1 = ELSupport.compare(null, o1, o2);
+        int i2 = ELSupport.compare(null, o2, o1);
         assertEquals(msg,expected, i1);
         assertEquals(msg,expected, -i2);
     }

Modified: tomcat/trunk/test/org/apache/el/lang/TestELSupport.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/lang/TestELSupport.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/lang/TestELSupport.java (original)
+++ tomcat/trunk/test/org/apache/el/lang/TestELSupport.java Fri Dec  5 17:33:58 
2014
@@ -33,7 +33,7 @@ import org.junit.Test;
 public class TestELSupport {
     @Test
     public void testEquals() {
-        assertTrue(ELSupport.equals("01", Long.valueOf(1)));
+        assertTrue(ELSupport.equals(null, "01", Long.valueOf(1)));
     }
 
     @Test
@@ -95,7 +95,7 @@ public class TestELSupport {
     public void testCoerceEnumAToEnumA() {
         Object output = null;
         try {
-            output = ELSupport.coerceToEnum(TestEnumA.VALA1, TestEnumA.class);
+            output = ELSupport.coerceToEnum(null, TestEnumA.VALA1, 
TestEnumA.class);
         } finally {
             assertEquals(TestEnumA.VALA1, output);
         }
@@ -105,7 +105,7 @@ public class TestELSupport {
     public void testCoerceEnumAToEnumB() {
         Object output = null;
         try {
-            output = ELSupport.coerceToEnum(TestEnumA.VALA1, TestEnumB.class);
+            output = ELSupport.coerceToEnum(null, TestEnumA.VALA1, 
TestEnumB.class);
         } catch (ELException ele) {
             // Ignore
         }
@@ -116,7 +116,7 @@ public class TestELSupport {
     public void testCoerceEnumAToEnumC() {
         Object output = null;
         try {
-            output = ELSupport.coerceToEnum(TestEnumA.VALA1, TestEnumC.class);
+            output = ELSupport.coerceToEnum(null, TestEnumA.VALA1, 
TestEnumC.class);
         } catch (ELException ele) {
             // Ignore
         }
@@ -243,31 +243,31 @@ public class TestELSupport {
     @Test
     public void testCoerceToNumber01() {
         Object result = ELSupport.coerceToNumber(
-                (Object) null, Integer.class);
+                null, (Object) null, Integer.class);
         Assert.assertNull("Resut: " + result, result);
     }
 
     @Test
     public void testCoerceToNumber02() {
         Object result = ELSupport.coerceToNumber(
-                (Object) null, int.class);
+                null, (Object) null, int.class);
         Assert.assertEquals(Integer.valueOf(0), result);
     }
 
     @Test
     public void testCoerceToBoolean01() {
-        Object result = ELSupport.coerceToBoolean(null, true);
+        Object result = ELSupport.coerceToBoolean(null, null, true);
         Assert.assertEquals(Boolean.FALSE, result);
     }
 
     @Test
     public void testCoerceToBoolean02() {
-        Object result = ELSupport.coerceToBoolean(null, false);
+        Object result = ELSupport.coerceToBoolean(null, null, false);
         Assert.assertNull("Resut: " + result, result);
     }
 
     private static void testIsSame(Object value) {
-        assertEquals(value, ELSupport.coerceToNumber(value, value.getClass()));
+        assertEquals(value, ELSupport.coerceToNumber(null, value, 
value.getClass()));
     }
 
     private static enum TestEnumA {

Modified: tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java?rev=1643366&r1=1643365&r2=1643366&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java 
(original)
+++ tomcat/trunk/test/org/apache/el/stream/TestCollectionOperations.java Fri 
Dec  5 17:33:58 2014
@@ -505,7 +505,7 @@ public class TestCollectionOperations {
 
         Number average = (Number) ((Optional) result).get();
         Assert.assertTrue("Result: " + average.toString(),
-                ELSupport.equals(Long.valueOf(3), average));
+                ELSupport.equals(null, Long.valueOf(3), average));
     }
 
 
@@ -519,7 +519,7 @@ public class TestCollectionOperations {
 
         Number average = (Number) ((Optional) result).get();
         Assert.assertTrue("Result: " + average.toString(),
-                ELSupport.equals(Double.valueOf(3.5), average));
+                ELSupport.equals(null, Double.valueOf(3.5), average));
     }
 
 
@@ -578,7 +578,7 @@ public class TestCollectionOperations {
                 Object.class);
 
         Assert.assertTrue("Result: " + result.toString(),
-                ELSupport.equals(Long.valueOf(15), result));
+                ELSupport.equals(null, Long.valueOf(15), result));
     }
 
 
@@ -591,7 +591,7 @@ public class TestCollectionOperations {
                 Object.class);
 
         Assert.assertTrue("Result: " + result.toString(),
-                ELSupport.equals(Long.valueOf(0), result));
+                ELSupport.equals(null, Long.valueOf(0), result));
     }
 
 
@@ -604,7 +604,7 @@ public class TestCollectionOperations {
                 Object.class);
 
         Assert.assertTrue("Result: " + result.toString(),
-                ELSupport.equals(Long.valueOf(5), result));
+                ELSupport.equals(null, Long.valueOf(5), result));
     }
 
 
@@ -617,7 +617,7 @@ public class TestCollectionOperations {
                 Object.class);
 
         Assert.assertTrue("Result: " + result.toString(),
-                ELSupport.equals(Long.valueOf(0), result));
+                ELSupport.equals(null, Long.valueOf(0), result));
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to