You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/08/02 16:00:04 UTC
svn commit: r1509720 -
/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java
Author: aadamchik
Date: Fri Aug 2 14:00:03 2013
New Revision: 1509720
URL: http://svn.apache.org/r1509720
Log:
CAY-1860 In-memory matching of DataObjects against ObjectId or int
making sure we don't round decimal numbers in comparison
Modified:
cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java
Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java?rev=1509720&r1=1509719&r2=1509720&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/main/java/org/apache/cayenne/exp/parser/Evaluator.java Fri Aug 2 14:00:03 2013
@@ -111,7 +111,15 @@ abstract class Evaluator {
}
if (rhs instanceof Number) {
- return Cayenne.longPKForObject(lhsPersistent) == ((Number) rhs).longValue();
+
+ // only care about whole numbers
+ if (rhs instanceof Integer) {
+ return Cayenne.longPKForObject(lhsPersistent) == ((Number) rhs).longValue();
+ }
+
+ if (rhs instanceof Long) {
+ return Cayenne.longPKForObject(lhsPersistent) == ((Number) rhs).longValue();
+ }
}
return Cayenne.pkForObject(lhsPersistent).equals(rhs);
@@ -151,11 +159,11 @@ abstract class Evaluator {
}
static <T> Evaluator evaluator(Object lhs) {
-
- if(lhs == null) {
+
+ if (lhs == null) {
return DEFAULT_EVALUATOR;
}
-
+
Class<?> lhsType = lhs.getClass();
Evaluator e = evaluators.get(lhsType);