From ead95135ad6a3e836f1749dd945257ab3de4c5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Suszy=C5=84ski?= Date: Mon, 30 Apr 2018 20:27:45 +0200 Subject: [PATCH] Filter out static fields while inspecting --- .../utils/stringify/impl/InspectingField.java | 2 +- .../impl/InspectingFieldFactory.java | 27 ------------ .../stringify/impl/InspectingFieldImpl.java | 42 +++++++++++++++++++ .../wavesoftware/utils/stringify/Earth.java | 3 ++ .../pl/wavesoftware/utils/stringify/Moon.java | 3 ++ .../wavesoftware/utils/stringify/Person.java | 4 +- .../wavesoftware/utils/stringify/Planet.java | 7 +++- 7 files changed, 57 insertions(+), 31 deletions(-) create mode 100644 src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldImpl.java diff --git a/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingField.java b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingField.java index 8e5e979..967b2f6 100644 --- a/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingField.java +++ b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingField.java @@ -4,7 +4,7 @@ * @author Krzysztof Suszynski * @since 27.04.18 */ -public interface InspectingField { +interface InspectingField { boolean shouldInspect(); boolean showNull(); } diff --git a/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldFactory.java b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldFactory.java index 9f1e6fe..e9e8123 100644 --- a/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldFactory.java +++ b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldFactory.java @@ -2,7 +2,6 @@ import lombok.RequiredArgsConstructor; import pl.wavesoftware.utils.stringify.configuration.BeanFactory; -import pl.wavesoftware.utils.stringify.configuration.DisplayNull; import pl.wavesoftware.utils.stringify.configuration.InspectionPoint; import pl.wavesoftware.utils.stringify.configuration.Mode; @@ -27,30 +26,4 @@ private InspectFieldPredicate createPredicate(BeanFactory beanFactory) { } } - @RequiredArgsConstructor - private class InspectingFieldImpl implements InspectingField { - private final InspectionPoint inspectionPoint; - private final InspectFieldPredicate predicate; - - @Override - public boolean shouldInspect() { - return technically() && predicate.shouldInspect(inspectionPoint); - } - - private boolean technically() { - return !inspectionPoint.getField().isEnumConstant() - && !inspectionPoint.getField().isSynthetic(); - } - - @Override - public boolean showNull() { - DisplayNull displayNull = inspectionPoint.getField() - .getAnnotation(DisplayNull.class); - if (displayNull != null) { - return displayNull.value(); - } else { - return DisplayNull.BY_DEFAULT; - } - } - } } diff --git a/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldImpl.java b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldImpl.java new file mode 100644 index 0000000..2fe1b29 --- /dev/null +++ b/src/main/java/pl/wavesoftware/utils/stringify/impl/InspectingFieldImpl.java @@ -0,0 +1,42 @@ +package pl.wavesoftware.utils.stringify.impl; + +import lombok.RequiredArgsConstructor; +import pl.wavesoftware.utils.stringify.configuration.DisplayNull; +import pl.wavesoftware.utils.stringify.configuration.InspectionPoint; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +/** + * @author Krzysztof Suszyński + * @since 2018-04-30 + */ +@RequiredArgsConstructor +final class InspectingFieldImpl implements InspectingField { + private final InspectionPoint inspectionPoint; + private final InspectFieldPredicate predicate; + + @Override + public boolean shouldInspect() { + return technically() && predicate.shouldInspect(inspectionPoint); + } + + private boolean technically() { + Field field = inspectionPoint.getField(); + int mods = field.getModifiers(); + return !Modifier.isStatic(mods) + && !field.isEnumConstant() + && !field.isSynthetic(); + } + + @Override + public boolean showNull() { + DisplayNull displayNull = inspectionPoint.getField() + .getAnnotation(DisplayNull.class); + if (displayNull != null) { + return displayNull.value(); + } else { + return DisplayNull.BY_DEFAULT; + } + } +} diff --git a/src/test/java/pl/wavesoftware/utils/stringify/Earth.java b/src/test/java/pl/wavesoftware/utils/stringify/Earth.java index 71b80cd..0fd433c 100644 --- a/src/test/java/pl/wavesoftware/utils/stringify/Earth.java +++ b/src/test/java/pl/wavesoftware/utils/stringify/Earth.java @@ -11,6 +11,9 @@ @Data @EqualsAndHashCode(callSuper = true) final class Earth extends Planet { + + private static final long serialVersionUID = 20180430201544L; + @Inspect private Moon moon; @Inspect diff --git a/src/test/java/pl/wavesoftware/utils/stringify/Moon.java b/src/test/java/pl/wavesoftware/utils/stringify/Moon.java index fcb4e19..d335b60 100644 --- a/src/test/java/pl/wavesoftware/utils/stringify/Moon.java +++ b/src/test/java/pl/wavesoftware/utils/stringify/Moon.java @@ -17,6 +17,9 @@ @ToString(exclude = "nullinside") @EqualsAndHashCode(callSuper = true) final class Moon extends Planet { + + private static final long serialVersionUID = 20180430201602L; + @Inspect private Phase phase; @Inspect diff --git a/src/test/java/pl/wavesoftware/utils/stringify/Person.java b/src/test/java/pl/wavesoftware/utils/stringify/Person.java index cdb6a67..775be3b 100644 --- a/src/test/java/pl/wavesoftware/utils/stringify/Person.java +++ b/src/test/java/pl/wavesoftware/utils/stringify/Person.java @@ -13,9 +13,9 @@ */ @Setter class Person { - private int id; + private volatile int id; @DisplayNull - private Person parent; + private transient Person parent; private List childs; private Account account; @Inspect(conditionally = IsInDevelopment.class) diff --git a/src/test/java/pl/wavesoftware/utils/stringify/Planet.java b/src/test/java/pl/wavesoftware/utils/stringify/Planet.java index efe21c0..4fc999f 100644 --- a/src/test/java/pl/wavesoftware/utils/stringify/Planet.java +++ b/src/test/java/pl/wavesoftware/utils/stringify/Planet.java @@ -5,12 +5,17 @@ import pl.wavesoftware.utils.stringify.configuration.DoNotInspect; import pl.wavesoftware.utils.stringify.configuration.Inspect; +import java.io.Serializable; + /** * @author Krzysztof Suszyński * @since 2018-04-18 */ @Data -abstract class Planet { +abstract class Planet implements Serializable { + + private static final long serialVersionUID = 20180430201529L; + @Inspect private String name; @Inspect