-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added class json attribute support in number of cases, notably abstra…
…ct classes within Map and List
- Loading branch information
Dominik Smogor
committed
Aug 22, 2017
1 parent
9bc6870
commit fe5e4f0
Showing
8 changed files
with
247 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.boon.json.code; | ||
|
||
|
||
/** | ||
* Created by piyush.goyal on 9/22/16. | ||
*/ | ||
public interface InterfaceB { | ||
|
||
String getPiyush(); | ||
|
||
void setPiyush(String piyush); | ||
|
||
} |
88 changes: 88 additions & 0 deletions
88
boon/src/test/java/org/boon/json/code/JsonAbstractClassesTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package org.boon.json.code; | ||
|
||
import org.boon.json.JsonFactory; | ||
import org.boon.json.JsonParserFactory; | ||
import org.boon.json.JsonSerializer; | ||
import org.boon.json.JsonSerializerFactory; | ||
import org.boon.json.ObjectMapper; | ||
import org.junit.Before; | ||
import org.junit.Test; | ||
import static org.junit.Assert.*; | ||
|
||
import java.util.ArrayList; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
/** | ||
* Created by piyush.goyal on 8/17/17. | ||
*/ | ||
public class JsonAbstractClassesTest { | ||
|
||
|
||
|
||
private ObjectMapper mapper; | ||
|
||
@Test | ||
public void testAbstracTClassesWSimpleMapper() { | ||
mapper = JsonFactory.create(new JsonParserFactory().useAnnotations(), | ||
new JsonSerializerFactory().useAnnotations()); | ||
testAbstracTClasses(); | ||
} | ||
@Test | ||
public void testAbstracTClassesWComplexMapper() { | ||
mapper = JsonFactory.create(new JsonParserFactory().setRespectIgnore(false).useAnnotations(), | ||
new JsonSerializerFactory().useAnnotations()); | ||
testAbstracTClasses(); | ||
} | ||
|
||
public void testAbstracTClasses() { | ||
|
||
|
||
JsonClassC c = new JsonClassC(); | ||
c.setPiyush("Tosheer"); | ||
|
||
JsonClassD d = new JsonClassD(); | ||
d.setPiyush("VIvek"); | ||
|
||
Map<String, InterfaceB> map = new HashMap<>(); | ||
map.put("c", c); | ||
map.put("d", d); | ||
|
||
List<InterfaceB> list = new ArrayList<>(); | ||
list.add(c); | ||
list.add(d); | ||
|
||
JsonClassA jsonClassA = new JsonClassA(); | ||
|
||
jsonClassA.setTextValue("aa"); | ||
jsonClassA.setXx(map); | ||
jsonClassA.setYy(list); | ||
|
||
JsonSerializer serializer = new JsonSerializerFactory().setOutputType(true).create(); | ||
|
||
String s = serializer.serialize(jsonClassA).toString(); | ||
System.out.println(s); | ||
|
||
//String json = "{\"class\":\"com.akqa.some.code.JsonClassA\",\"xx\":{\"c\":{\"class\":\"com.akqa.some.code.JsonClassC\",\"piyush\":\"Tosheer\"},\"d\":{\"class\":\"com.akqa.some.code.JsonClassD\",\"piyush\":\"VIvek\"}},\"textValue\":\"aa\"}"; | ||
String json = s; | ||
JsonClassA jsonClassA1 = mapper.fromJson(json, JsonClassA.class); | ||
|
||
|
||
assertEquals("aa", jsonClassA1.getTextValue()); | ||
Map<String, InterfaceB> xx = jsonClassA1.getXx(); | ||
InterfaceB c1 = xx.get("c"); | ||
InterfaceB d1 = xx.get("d"); | ||
assertEquals("Tosheer", c1.getPiyush()); | ||
assertEquals("VIvek", d1.getPiyush()); | ||
assertEquals(c.getClass(), c1.getClass()); | ||
assertEquals(d.getClass(), d1.getClass()); | ||
List<InterfaceB> list1= jsonClassA1.getYy(); | ||
c1 = list1.get(0); | ||
d1 = list1.get(1); | ||
assertEquals("Tosheer", c1.getPiyush()); | ||
assertEquals("VIvek", d1.getPiyush()); | ||
assertEquals(c.getClass(), c1.getClass()); | ||
assertEquals(d.getClass(), d1.getClass()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package org.boon.json.code; | ||
|
||
import java.util.ArrayList; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
/** | ||
* Created by piyush.goyal on 9/22/16. | ||
*/ | ||
public class JsonClassA { | ||
|
||
|
||
private Map<String, InterfaceB> xx = new HashMap<>(); | ||
|
||
private List<InterfaceB> yy = new ArrayList<>(); | ||
private String textValue; | ||
|
||
public String getTextValue() { | ||
return textValue; | ||
} | ||
|
||
public void setTextValue(String textValue) { | ||
this.textValue = textValue; | ||
} | ||
|
||
public Map<String, InterfaceB> getXx() { | ||
return xx; | ||
} | ||
|
||
public void setXx(Map<String, InterfaceB> xx) { | ||
this.xx = xx; | ||
} | ||
|
||
public List<InterfaceB> getYy() { | ||
return yy; | ||
} | ||
|
||
public void setYy(List<InterfaceB> yy) { | ||
this.yy = yy; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package org.boon.json.code; | ||
|
||
/** | ||
* Created by piyush.goyal on 9/22/16. | ||
*/ | ||
public class JsonClassC implements InterfaceB { | ||
|
||
protected JsonClassC(){} | ||
|
||
|
||
private String piyush; | ||
|
||
@Override | ||
public String getPiyush() { | ||
return piyush; | ||
} | ||
|
||
@Override | ||
public void setPiyush(String piyush) { | ||
this.piyush = piyush; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.boon.json.code; | ||
|
||
/** | ||
* Created by piyush.goyal on 9/22/16. | ||
*/ | ||
public class JsonClassD implements InterfaceB { | ||
|
||
private String piyush; | ||
|
||
@Override | ||
public String getPiyush() { | ||
return piyush; | ||
} | ||
|
||
@Override | ||
public void setPiyush(String piyush) { | ||
this.piyush = piyush; | ||
} | ||
} |