Skip to content

Commit 0f53b9d

Browse files
committed
adding support for classes (#11)
1 parent f29b6d5 commit 0f53b9d

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

json-view/src/main/java/com/monitorjbl/json/JsonViewSerializer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ boolean writeSpecial(Object obj) throws IOException {
8787
jgen.writeString(obj.toString());
8888
} else if (obj instanceof URI) {
8989
jgen.writeString(obj.toString());
90+
} else if (obj instanceof Class) {
91+
jgen.writeString(((Class) obj).getCanonicalName());
9092
} else {
9193
return false;
9294
}
@@ -225,7 +227,7 @@ void writeObject(Object obj) throws IOException {
225227
boolean fieldAllowed(Field field, Class declaringClass) {
226228
String name = field.getName();
227229
String prefix = currentPath.length() > 0 ? currentPath + "." : "";
228-
if(Modifier.isStatic(field.getModifiers())){
230+
if (Modifier.isStatic(field.getModifiers())) {
229231
return false;
230232
}
231233

json-view/src/test/java/com/monitorjbl/json/JsonViewSerializerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,16 @@ public void testURIs() throws Exception {
444444
assertEquals(ref.getUri().toString(), obj.get("uri"));
445445
}
446446

447+
@Test
448+
public void testClass() throws Exception {
449+
TestObject ref = new TestObject();
450+
ref.setCls(TestSubobject.class);
451+
452+
String serialized = sut.writeValueAsString(JsonView.with(ref));
453+
Map<String, Object> obj = sut.readValue(serialized, HashMap.class);
454+
assertEquals(ref.getCls().getCanonicalName(), obj.get("cls"));
455+
}
456+
447457
@Test
448458
public void testEnums() throws Exception {
449459
TestObject ref = new TestObject();

json-view/src/test/java/com/monitorjbl/json/WriterTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,14 @@ public void testWriteSpecial_uri() throws Exception {
194194
verify(jgen, times(1)).writeString(uri.toString());
195195
}
196196

197+
@Test
198+
public void testWriteSpecial_class() throws Exception {
199+
Class cls = TestObject.class;
200+
sut.writeSpecial(cls);
201+
verify(jgen, times(1)).writeString(cls.getCanonicalName());
202+
}
203+
204+
197205
@Test
198206
public void testWriteList_stringList() throws Exception {
199207
assertTrue(sut.writeList(newArrayList("val1", "val2")));

json-view/src/test/java/com/monitorjbl/json/model/TestObject.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public static enum TestEnum {VALUE_A, VALUE_B}
3636
private TestEnum testEnum;
3737
private URL url;
3838
private URI uri;
39+
private Class cls;
3940

4041
public String getStr1() {
4142
return str1;
@@ -188,4 +189,12 @@ public URI getUri() {
188189
public void setUri(URI uri) {
189190
this.uri = uri;
190191
}
192+
193+
public Class getCls() {
194+
return cls;
195+
}
196+
197+
public void setCls(Class cls) {
198+
this.cls = cls;
199+
}
191200
}

0 commit comments

Comments
 (0)