diff --git a/json-view/pom.xml b/json-view/pom.xml
index 1b5e052..0a21b9d 100644
--- a/json-view/pom.xml
+++ b/json-view/pom.xml
@@ -6,7 +6,7 @@
com.monitorjbl
json-view
- 1.1.0
+ 1.1.1-beta
json-view
Provides programmatic exclusion/inclusion for Jackson JSON serialization
https://github.com/monitorjbl/json-view
@@ -125,13 +125,11 @@
-
- ossrh
- https://oss.sonatype.org/content/repositories/snapshots
-
- ossrh
- https://oss.sonatype.org/service/local/staging/deploy/maven2
+ hrs.repo
+ https://artifactory.int.hrs.com/artifactory/releases-local
+
+
diff --git a/json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java b/json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java
index b0d8df8..4b60b90 100644
--- a/json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java
+++ b/json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java
@@ -48,6 +48,9 @@
import static java.util.Arrays.asList;
public class JsonViewSerializer extends JsonSerializer {
+
+ private static final String GETTER_PREFIX = "get";
+ private static final String BOOLEAN_GETTER_PREFIX = "is";
public static boolean log = false;
/**
* Cached results from expensive (pure) methods
@@ -638,7 +641,7 @@ private List getAccessibleProperties(Class cls) {
.map(f -> new AccessibleProperty(f.getName(), f.getAnnotations(), f))
.forEach(p -> accessibleProperties.put(p.name, p));
getDeclaredMethods(cls).stream()
- .filter(m -> m.getName().startsWith("get") && !m.getReturnType().equals(Void.class) && m.getParameters().length == 0)
+ .filter(this::isValidGetter)
.map(m -> new AccessibleProperty(getFieldNameFromGetter(m), m.getAnnotations(), m))
.forEach(p -> {
AccessibleProperty field = accessibleProperties.get(p.name);
@@ -662,6 +665,13 @@ private List getAccessibleProperties(Class cls) {
});
}
+ private boolean isValidGetter(Method m) {
+ boolean isGetter = m.getName().startsWith(GETTER_PREFIX) && !m.getReturnType().equals(Void.class) && m.getParameters().length == 0;
+ boolean isBooleanGetter = m.getName().startsWith(BOOLEAN_GETTER_PREFIX)
+ && m.getReturnType().getSimpleName().equalsIgnoreCase(Boolean.class.getSimpleName()) && m.getParameters().length == 0;
+ return isGetter || isBooleanGetter;
+ }
+
private List getDeclaredFields(Class cls) {
List fields = new ArrayList<>();
Stack parents = new Stack<>();
@@ -791,10 +801,18 @@ private String getFieldName(AccessibleProperty property) {
}
private String getFieldNameFromGetter(Method method) {
- if (method.getName().equals("get")) {
+ String methodName = method.getName();
+ if (methodName.equals(GETTER_PREFIX) || methodName.equals(BOOLEAN_GETTER_PREFIX)) {
return method.getName();
}
- String name = method.getName().replaceFirst("get", "");
+ String name;
+ if (methodName.startsWith(GETTER_PREFIX)) {
+ name = methodName.replaceFirst(GETTER_PREFIX, "");
+ } else if (methodName.startsWith(BOOLEAN_GETTER_PREFIX)){
+ name = methodName.replaceFirst(BOOLEAN_GETTER_PREFIX, "");
+ } else {
+ throw new IllegalArgumentException(String.format("'%s' method is not a valid getter", methodName));
+ }
return name.substring(0, 1).toLowerCase() + name.substring(1);
}
diff --git a/json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java b/json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java
index a399516..c2f18c5 100644
--- a/json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java
+++ b/json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java
@@ -832,6 +832,8 @@ public void testDeepNestedObjects() throws Exception {
TestSubobject subobject = new TestSubobject();
subobject.setVal("someval");
subobject.setOtherVal("otherval");
+ subobject.setBooleanVal(true);
+ subobject.setBooleanBoxedVal(true);
TestObject ref = new TestObject();
ref.setStr1("somestr");
ref.setSub(subobject);
@@ -848,6 +850,9 @@ public void testDeepNestedObjects() throws Exception {
Map subMap = (Map) obj.get("sub");
assertNotNull(subMap.get("val"));
assertEquals(subobject.getVal(), subMap.get("val"));
+ assertNotNull(subMap.get("booleanVal"));
+ assertEquals(subobject.isBooleanVal(), subMap.get("booleanVal"));
+ assertEquals(subobject.isBooleanBoxedVal(), subMap.get("booleanBoxedVal"));
assertNull(subMap.get("otherVal"));
}
diff --git a/json-view/src/test/java/com/monitorjbl/json/model/TestSubobject.java b/json-view/src/test/java/com/monitorjbl/json/model/TestSubobject.java
index fbfb3ff..a7d25b3 100644
--- a/json-view/src/test/java/com/monitorjbl/json/model/TestSubobject.java
+++ b/json-view/src/test/java/com/monitorjbl/json/model/TestSubobject.java
@@ -4,6 +4,8 @@ public class TestSubobject {
private String val;
private String otherVal;
private TestSubobject sub;
+ private boolean booleanVal;
+ private Boolean booleanBoxedVal;
public TestSubobject(String val) {
this.val = val;
@@ -17,6 +19,22 @@ public TestSubobject(String val, TestSubobject sub) {
public TestSubobject() {
}
+ public boolean isBooleanVal() {
+ return booleanVal;
+ }
+
+ public void setBooleanVal(boolean booleanVal) {
+ this.booleanVal = booleanVal;
+ }
+
+ public Boolean isBooleanBoxedVal() {
+ return booleanBoxedVal;
+ }
+
+ public void setBooleanBoxedVal(Boolean booleanBoxedVal) {
+ this.booleanBoxedVal = booleanBoxedVal;
+ }
+
public String getVal() {
return val;
}
diff --git a/spring-json-view/pom.xml b/spring-json-view/pom.xml
index ed6dc95..eb22c90 100644
--- a/spring-json-view/pom.xml
+++ b/spring-json-view/pom.xml
@@ -6,7 +6,7 @@
com.monitorjbl
spring-json-view
- 1.1.0
+ 1.1.1-beta
spring-json-view
Provides programmatic JSON response manipulation for Spring MVC
https://github.com/monitorjbl/spring-json-view