Re: svn commit: r1244574 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/el/lang/ELSupport.java test/org/apache/el/lang/TestELSupport.java webapps/docs/changelog.xml

2012-02-16 Thread Konstantin Kolinko
2012/2/15  ma...@apache.org:
 Author: markt
 Date: Wed Feb 15 16:30:37 2012
 New Revision: 1244574

 URL: http://svn.apache.org/viewvc?rev=1244574view=rev
 Log:
 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52666
 Correct coercion order in EL for A {==,!=,eq,ne} B

 Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java
    tomcat/tc7.0.x/trunk/test/org/apache/el/lang/TestELSupport.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml


Regarding ELSupport#compare() and ELSupport#equals()
Their Javadoc comments document how those methods are implemented.
With this fix applied the equals() method Javadoc does not match
implementation anymore.

I think it should mention EL 1.8.1 and EL 1.8.2 as specifications
behind this implementation.

Though there is some small difference between EL 1.8.1 and compare()
in handling of null values. Anyway compare() cannot handle nulls per
EL 1.8.1 as it cannot return false but returns an integer. The
compare() method has its own special treatment of nulls as its javadoc
says.

It is only documentation issue. The code itself is OK.
It is not an issue for 6.0, because Javadoc for these methods is
essentially empty there.

I plan to look into fixing this later, but anyone can beat me over it.

Best regards,
Konstantin Kolinko


 Modified: tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java
 URL: 
 http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java?rev=1244574r1=1244573r2=1244574view=diff
 ==
 --- tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java (original)
 +++ tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java Wed Feb 15 
 16:30:37 2012
 @@ -127,35 +127,31 @@ public class ELSupport {
             return true;
         } else if (obj0 == null || obj1 == null) {
             return false;
 -        } else if (obj0 instanceof Boolean || obj1 instanceof Boolean) {
 -            return coerceToBoolean(obj0).equals(coerceToBoolean(obj1));
 -        } else if (obj0.getClass().isEnum()) {
 -            return obj0.equals(coerceToEnum(obj1, obj0.getClass()));
 -        } else if (obj1.getClass().isEnum()) {
 -            return obj1.equals(coerceToEnum(obj0, obj1.getClass()));
 -        } else if (obj0 instanceof String || obj1 instanceof String) {
 -            int lexCompare = 
 coerceToString(obj0).compareTo(coerceToString(obj1));
 -            return (lexCompare == 0) ? true : false;
 -        }
 -        if (isBigDecimalOp(obj0, obj1)) {
 +        } else if (isBigDecimalOp(obj0, obj1)) {
             BigDecimal bd0 = (BigDecimal) coerceToNumber(obj0, 
 BigDecimal.class);
             BigDecimal bd1 = (BigDecimal) coerceToNumber(obj1, 
 BigDecimal.class);
             return bd0.equals(bd1);
 -        }
 -        if (isDoubleOp(obj0, obj1)) {
 +        } else if (isDoubleOp(obj0, obj1)) {
             Double d0 = (Double) coerceToNumber(obj0, Double.class);
             Double d1 = (Double) coerceToNumber(obj1, Double.class);
             return d0.equals(d1);
 -        }
 -        if (isBigIntegerOp(obj0, obj1)) {
 +        } else if (isBigIntegerOp(obj0, obj1)) {
             BigInteger bi0 = (BigInteger) coerceToNumber(obj0, 
 BigInteger.class);
             BigInteger bi1 = (BigInteger) coerceToNumber(obj1, 
 BigInteger.class);
             return bi0.equals(bi1);
 -        }
 -        if (isLongOp(obj0, obj1)) {
 +        } else         if (isLongOp(obj0, obj1)) {
             Long l0 = (Long) coerceToNumber(obj0, Long.class);
             Long l1 = (Long) coerceToNumber(obj1, Long.class);
             return l0.equals(l1);
 +        } else if (obj0 instanceof Boolean || obj1 instanceof Boolean) {
 +            return coerceToBoolean(obj0).equals(coerceToBoolean(obj1));
 +        } else if (obj0.getClass().isEnum()) {
 +            return obj0.equals(coerceToEnum(obj1, obj0.getClass()));
 +        } else if (obj1.getClass().isEnum()) {
 +            return obj1.equals(coerceToEnum(obj0, obj1.getClass()));
 +        } else if (obj0 instanceof String || obj1 instanceof String) {
 +            int lexCompare = 
 coerceToString(obj0).compareTo(coerceToString(obj1));
 +            return (lexCompare == 0) ? true : false;
         } else {
             return obj0.equals(obj1);
         }


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



svn commit: r1244574 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/el/lang/ELSupport.java test/org/apache/el/lang/TestELSupport.java webapps/docs/changelog.xml

2012-02-15 Thread markt
Author: markt
Date: Wed Feb 15 16:30:37 2012
New Revision: 1244574

URL: http://svn.apache.org/viewvc?rev=1244574view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52666
Correct coercion order in EL for A {==,!=,eq,ne} B

Modified:
tomcat/tc7.0.x/trunk/   (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/el/lang/ELSupport.java
tomcat/tc7.0.x/trunk/test/org/apache/el/lang/TestELSupport.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 15 16:30:37 2012
@@ -1 +1 @@
-/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096
 
,1173241,1173256,1173288,117,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174975,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175798,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187
 
381,1187753,1187755,1187775,1187801,1187806,1187809,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805,1189857,1189864,1189882,1190034,1190185,1190279,1190339,1190371,1190388-1190389,1190474,1190481,1194915,1195222-1195223,1195531,1195899,1195905,1195943,1195949,1195953,1195955,1195965,1195968,1196175,1196212,1196223,1196304-1196305,1196735,1196825,1196827,1197158,1197261,1197263,1197299-1197300,1197305,1197339-1197340,1197343,1197382,1197386-1197387,1197480,1197578,1198497,1198528,1198552,1198602,1198604,1198607,1198622,1198640,1198696,1198707,1199418,1199432,1199436,1199513,1199529,1199980,116,1200056,1200089,1200106-1200107,1200263,1200316,1200320,1200398-1200399,1200445-1200446,1200555,1200627,1200696,1200725,1200937,1200941,1201069,1201087,1201180,1201235-1201237,1201508,1201521,1201542,1201545-1201546,1201548,1201555-1201556,1201568,1201576,1201608,1201921-1201922,1
 
201931,1202035,1202039,1202271,1202565,1202578,1202705,1202828,1202860,1203047-1203052,1203078,1203091,1203253,1203278,1204182,1204856,1204867,1204936,1204938,1204982,1205033,1205065,1205082,1205097,1205112,1206200,1207692,1208046,1208073,1208096,1208114,1208145,1208772,1209194,1209277-1209278,1209686-1209731,1210894,1212091,1212095,1212099,1212118,1213469,1213906,1214853,1214855,1214864,1215115,1215118-1215119,1215121,1220293,1220295,1221038,1221842,1222189,101,176,1222300,1222690,1222850,1222852,1222855,1224607,1224617,1224648-1224652,1224657,1224662-1224663,1224682,1224801,1224910,1225000,1225219,1225343,1225465,1225627,1225629,1225634,1226069,1226158-1226159,1226177,1226196,1226214-1226215,1226385,1226394,1226500,1226537-1226538,1226546,1226551,1226975,1228196,1228360,1228376,1228724,1228908,1228918,1228920,1228922,1228929,1228969,1229307,1229536,1229549,1229724,1229726-1229731,1229997,1230539,1230711,1230729,1230762-1230763,1230765,1230955,1230957,1231285,123129