package org.apache.struts2.json; import org.apache.struts2.StrutsTestCase; import org.apache.struts2.json.annotations.JSONFieldBridge; import org.apache.struts2.json.bridge.StringBridge; import org.junit.Test; import java.util.Map; import java.util.LinkedHashMap; import java.net.URL; public class JSONWriterTest extends StrutsTestCase{ @Test public void testWrite() throws Exception { Bean bean1=new Bean(); bean1.setStringField("str"); bean1.setBooleanField(true); bean1.setCharField('s'); bean1.setDoubleField(10.1); bean1.setFloatField(1.5f); bean1.setIntField(10); bean1.setLongField(100); bean1.setEnumField(AnEnum.ValueA); bean1.setEnumBean(AnEnumBean.Two); JSONWriter jsonWriter = new JSONWriter(); jsonWriter.setEnumAsBean(false); String json = jsonWriter.write(bean1); TestUtils.assertEquals(JSONWriter.class.getResource("jsonwriter-write-bean-01.txt"), json); } @Test public void testWriteExcludeNull() throws Exception { BeanWithMap bean1=new BeanWithMap(); bean1.setStringField("str"); bean1.setBooleanField(true); bean1.setCharField('s'); bean1.setDoubleField(10.1); bean1.setFloatField(1.5f); bean1.setIntField(10); bean1.setLongField(100); bean1.setEnumField(AnEnum.ValueA); bean1.setEnumBean(AnEnumBean.Two); Map m = new LinkedHashMap(); m.put("a", "x"); m.put("b", null); m.put("c", "z"); bean1.setMap(m); JSONWriter jsonWriter = new JSONWriter(); jsonWriter.setEnumAsBean(false); jsonWriter.setIgnoreHierarchy(false); String json = jsonWriter.write(bean1, null, null, true); TestUtils.assertEquals(JSONWriter.class.getResource("jsonwriter-write-bean-03.txt"), json); } private class BeanWithMap extends Bean{ private Map map; public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } } @Test public void testWriteAnnotatedBean() throws Exception { AnnotatedBean bean1=new AnnotatedBean(); bean1.setStringField("str"); bean1.setBooleanField(true); bean1.setCharField('s'); bean1.setDoubleField(10.1); bean1.setFloatField(1.5f); bean1.setIntField(10); bean1.setLongField(100); bean1.setEnumField(AnEnum.ValueA); bean1.setEnumBean(AnEnumBean.Two); bean1.setUrl(new URL("http://www.google.com")); JSONWriter jsonWriter = new JSONWriter(); jsonWriter.setEnumAsBean(false); jsonWriter.setIgnoreHierarchy(false); String json = jsonWriter.write(bean1); TestUtils.assertEquals(JSONWriter.class.getResource("jsonwriter-write-bean-02.txt"), json); } private class AnnotatedBean extends Bean{ private URL url; @JSONFieldBridge(impl = StringBridge.class) public URL getUrl() { return url; } public void setUrl(URL url) { this.url = url; } } }