From a1ff83e9e4540f0abf35e7f45b143df28f335b39 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Fri, 8 Apr 2016 15:15:34 +1200 Subject: [PATCH] #643 - NPE on OrmQueryProperties.java:474 --- .../server/querydefn/OrmQueryProperties.java | 4 ++- .../server/querydefn/OrmQueryDetailTest.java | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryProperties.java b/src/main/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryProperties.java index 3ea4da639..18642c890 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryProperties.java +++ b/src/main/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryProperties.java @@ -469,7 +469,9 @@ public class OrmQueryProperties implements Serializable { */ public boolean isSameByAutoTune(OrmQueryProperties p2) { if (included == null) { - return p2.included == null; + return p2 == null || p2.included == null; + } else if (p2 == null) { + return false; } return included.equals(p2.included); } diff --git a/src/test/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryDetailTest.java b/src/test/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryDetailTest.java index 0ca744e09..fa69d51ee 100644 --- a/src/test/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryDetailTest.java +++ b/src/test/java/com/avaje/ebeaninternal/server/querydefn/OrmQueryDetailTest.java @@ -75,6 +75,36 @@ public class OrmQueryDetailTest extends BaseTestCase { assertFalse(detail1.isAutoTuneEqual(detail2)); } + @Test + public void isAutoTuneEqual_when_different_removedFetch() { + + OrmQueryDetail detail1 = parse("select (id,name) fetch customer (name) fetch details (code) fetch customer.contacts"); + OrmQueryDetail detail2 = parse("select (id,name) fetch customer (name) fetch details (code)"); + + assertFalse(detail1.isAutoTuneEqual(detail2)); + assertFalse(detail2.isAutoTuneEqual(detail1)); + } + + @Test + public void isAutoTuneEqual_when_different_removedFetchProperty() { + + OrmQueryDetail detail1 = parse("select (id,name) fetch customer (name)"); + OrmQueryDetail detail2 = parse("select (id,name) fetch customer "); + + assertFalse(detail1.isAutoTuneEqual(detail2)); + assertFalse(detail2.isAutoTuneEqual(detail1)); + } + + @Test + public void isAutoTuneEqual_when_different_path() { + + OrmQueryDetail detail1 = parse("select (id,name) fetch customer (name)"); + OrmQueryDetail detail2 = parse("select (id,name) fetch details (id) "); + + assertFalse(detail1.isAutoTuneEqual(detail2)); + assertFalse(detail2.isAutoTuneEqual(detail1)); + } + @Test public void select_whenMultiple() throws Exception {