From 183b601be8e26d5214bad4712341e46d81e85069 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 8 Apr 2022 18:53:57 +1200 Subject: [PATCH] #2641 - toString() - Change BeanCollection toString() implementations, suppress unloaded BeanCollections --- .../java/io/ebean/bean/ToStringBuilder.java | 10 +++++++++- .../src/main/java/io/ebean/common/BeanList.java | 11 ++--------- .../src/main/java/io/ebean/common/BeanMap.java | 17 +++++------------ .../src/main/java/io/ebean/common/BeanSet.java | 11 ++--------- .../TestElementCollectionBasicMap.java | 2 +- .../TestElementCollectionBasicSet.java | 2 +- .../TestElementCollectionEmbeddedList.java | 2 +- .../TestElementCollectionEmbeddedMap.java | 2 +- .../TestElementCollectionEnumSet.java | 2 +- pom.xml | 4 ++-- 10 files changed, 25 insertions(+), 38 deletions(-) diff --git a/ebean-api/src/main/java/io/ebean/bean/ToStringBuilder.java b/ebean-api/src/main/java/io/ebean/bean/ToStringBuilder.java index 30894b9f6..2d57ab944 100644 --- a/ebean-api/src/main/java/io/ebean/bean/ToStringBuilder.java +++ b/ebean-api/src/main/java/io/ebean/bean/ToStringBuilder.java @@ -53,6 +53,12 @@ public final class ToStringBuilder { */ public void add(String name, Object value) { if (value != null && counter <= MAX) { + if (value instanceof BeanCollection) { + if (((BeanCollection)value).isReference()) { + // suppress unloaded bean collections + return; + } + } key(name); value(value); } @@ -91,7 +97,9 @@ public final class ToStringBuilder { return; } if (value instanceof ToStringAware) { - if (push(value)) { + if (value instanceof BeanCollection) { + ((ToStringAware) value).toString(this); + } else if (push(value)) { ((ToStringAware) value).toString(this); } } else if (value instanceof Collection) { diff --git a/ebean-api/src/main/java/io/ebean/common/BeanList.java b/ebean-api/src/main/java/io/ebean/common/BeanList.java index 0305b4a5d..0a04eb472 100644 --- a/ebean-api/src/main/java/io/ebean/common/BeanList.java +++ b/ebean-api/src/main/java/io/ebean/common/BeanList.java @@ -193,18 +193,11 @@ public final class BeanList extends AbstractBeanCollection implements List @Override public String toString() { - StringBuilder sb = new StringBuilder(50); - sb.append("BeanList "); - if (isReadOnly()) { - sb.append("readOnly "); - } if (list == null) { - sb.append("deferred "); + return "BeanList"; } else { - sb.append("size[").append(list.size()).append("] "); - sb.append("list").append(list); + return list.toString(); } - return sb.toString(); } /** diff --git a/ebean-api/src/main/java/io/ebean/common/BeanMap.java b/ebean-api/src/main/java/io/ebean/common/BeanMap.java index 25f51b7aa..454642d55 100644 --- a/ebean-api/src/main/java/io/ebean/common/BeanMap.java +++ b/ebean-api/src/main/java/io/ebean/common/BeanMap.java @@ -197,27 +197,20 @@ public final class BeanMap extends AbstractBeanCollection implements Ma @Override public String toString() { - StringBuilder sb = new StringBuilder(50); - sb.append("BeanMap "); - if (isReadOnly()) { - sb.append("readOnly "); - } if (map == null) { - sb.append("deferred "); + return "BeanMap"; } else { - sb.append("size[").append(map.size()).append("]"); - sb.append(" map").append(map); + return map.toString(); } - return sb.toString(); } /** - * Equal if obj is a Map and equal in a Map sense. + * Equal if object is a Map and equal in a Map sense. */ @Override - public boolean equals(Object obj) { + public boolean equals(Object object) { init(); - return map.equals(obj); + return map.equals(object); } @Override diff --git a/ebean-api/src/main/java/io/ebean/common/BeanSet.java b/ebean-api/src/main/java/io/ebean/common/BeanSet.java index e82e82bbb..683b2c1f9 100644 --- a/ebean-api/src/main/java/io/ebean/common/BeanSet.java +++ b/ebean-api/src/main/java/io/ebean/common/BeanSet.java @@ -171,18 +171,11 @@ public final class BeanSet extends AbstractBeanCollection implements Set"; } else { - sb.append("size[").append(set.size()).append("]"); - sb.append(" set").append(set); + return set.toString(); } - return sb.toString(); } /** diff --git a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java index 0bf01e2e2..0e5b01853 100644 --- a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java +++ b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java @@ -192,6 +192,6 @@ public class TestElementCollectionBasicMap extends BaseTestCase { final EcmPerson fromJson = DB.json().toBean(EcmPerson.class, asJson); assertThat(fromJson.getName()).isEqualTo("Fiona021"); assertThat(fromJson.getPhoneNumbers()).hasSize(2); - assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanMap size[2] map{home=021 1234, work=021 4321}"); + assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("{home=021 1234, work=021 4321}"); } } diff --git a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java index 36bb4c28f..8860f6958 100644 --- a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java +++ b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java @@ -183,6 +183,6 @@ class TestElementCollectionBasicSet extends BaseTestCase { final EcsPerson fromJson = DB.json().toBean(EcsPerson.class, asJson); assertThat(fromJson.getName()).isEqualTo("Fiona021"); assertThat(fromJson.getPhoneNumbers()).hasSize(2); - assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanSet size[2] set[021 1234, 021 4321]"); + assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("[021 1234, 021 4321]"); } } diff --git a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java index 508c84156..a3ec36ab7 100644 --- a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java +++ b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java @@ -190,6 +190,6 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase { final EcblPerson fromJson = DB.json().toBean(EcblPerson.class, asJson); assertThat(fromJson.getName()).isEqualTo("Fiona64021"); assertThat(fromJson.getPhoneNumbers()).hasSize(2); - assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanList size[2] list[64-021-1234, 64-021-4321]"); + assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("[64-021-1234, 64-021-4321]"); } } diff --git a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java index 0c9ab75a0..bc3cacff1 100644 --- a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java +++ b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java @@ -181,6 +181,6 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase { final EcbmPerson fromJson = DB.json().toBean(EcbmPerson.class, asJson); assertThat(fromJson.getName()).isEqualTo("Fiona64021"); assertThat(fromJson.getPhoneNumbers()).hasSize(2); - assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanMap size[2] map{home=64-021-1234, work=64-021-4321}"); + assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("{home=64-021-1234, work=64-021-4321}"); } } diff --git a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java index 27d856347..9482671f1 100644 --- a/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java +++ b/ebean-test/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java @@ -45,6 +45,6 @@ public class TestElementCollectionEnumSet extends BaseTestCase { final EcEnumPerson fromJson = DB.json().toBean(EcEnumPerson.class, asJson); assertThat(fromJson.getName()).isEqualTo("Enum Person"); assertThat(fromJson.getTags()).hasSize(2); - assertThat(fromJson.getTags().toString()).isEqualTo("BeanSet size[2] set[BLUE, RED]"); + assertThat(fromJson.getTags().toString()).isEqualTo("[BLUE, RED]"); } } diff --git a/pom.xml b/pom.xml index 01f686152..dc48a5429 100644 --- a/pom.xml +++ b/pom.xml @@ -46,8 +46,8 @@ 13.0.0 4.5 7.5 - 13.2.0 - 13.2.0 + 13.2.1-RC1 + 13.2.1-RC1 false