Repository: cayenne Updated Branches: refs/heads/STABLE-4.0 5a5f07ada -> e448b4f64
CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0cc396e6 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0cc396e6 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0cc396e6 Branch: refs/heads/STABLE-4.0 Commit: 0cc396e6bbdd7a1cda6e6a82afe5d2086eede31d Parents: 5a5f07a Author: Nikita Timofeev <stari...@gmail.com> Authored: Wed Aug 29 14:04:47 2018 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Wed Aug 29 14:04:47 2018 +0300 ---------------------------------------------------------------------- RELEASE-NOTES.txt | 9 +++++++++ .../java/org/apache/cayenne/exp/Expression.java | 2 +- .../org/apache/cayenne/exp/ExpressionTest.java | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/RELEASE-NOTES.txt ---------------------------------------------------------------------- diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index fbbf372..5e1bfad 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -8,6 +8,15 @@ To browse individual bug reports check out project issue tracker: https://issues.apache.org/jira/browse/CAY ---------------------------------- +Release: 4.0.1 +Date: +---------------------------------- + +Bug Fixes: + +CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer + +---------------------------------- Release: 4.0 Date: August 06, 2018 ---------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java index 0d35cea..7f4c288 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java @@ -671,7 +671,7 @@ public abstract class Expression implements Serializable, XMLSerializable { } // all the children are processed, only now transform this copy - return (transformer != null) ? (Expression) transformer.transform(copy) : copy; + return (transformer != null) ? transformer.transform(copy) : copy; } /** http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java index e0e306b..be71289 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java @@ -26,8 +26,10 @@ import java.util.Date; import java.util.List; import org.apache.cayenne.ObjectId; +import org.apache.cayenne.exp.parser.ASTFalse; import org.apache.cayenne.exp.parser.SimpleNode; import org.apache.cayenne.testdo.testmap.Artist; +import org.apache.commons.collections.Transformer; import org.junit.Test; public class ExpressionTest { @@ -429,4 +431,19 @@ public class ExpressionTest { assertEquals("a = enum:org.apache.cayenne.exp.ExpEnum1.TWO", buffer.toString()); } + @Test + public void testCustomPruneTransform() { + Expression exp = ExpressionFactory.exp("(false and true) and true"); + Expression transformed = exp.transform(new Transformer() { + @Override + public Object transform(Object node) { + if (node instanceof ASTFalse) { + return Expression.PRUNED_NODE; + } + return node; + } + }); + assertEquals("true and true", transformed.toString()); + } + }