package com.fasterxml.jackson.databind.misc;
import java.util.Arrays;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.fasterxml.jackson.databind.util.JSONWrappedObject;
public class TestJSONP
extends BaseMapTest
{
static class Base {
public String a;
}
static class Impl extends Base {
public String b;
public Impl(String a, String b) {
this.a = a;
this.b = b;
}
}
private final ObjectMapper MAPPER = new ObjectMapper();
public void testSimpleScalars() throws Exception
{
assertEquals("callback(\"abc\")",
MAPPER.writeValueAsString(new JSONPObject("callback", "abc")));
assertEquals("calc(123)",
MAPPER.writeValueAsString(new JSONPObject("calc", Integer.valueOf(123))));
assertEquals("dummy(null)",
MAPPER.writeValueAsString(new JSONPObject("dummy", null)));
}
public void testSimpleBean() throws Exception
{
assertEquals("xxx({\"a\":\"123\",\"b\":\"456\"})",
MAPPER.writeValueAsString(new JSONPObject("xxx",
new Impl("123", "456"))));
}
/**
* Test to ensure that it is possible to force a static type for wrapped
* value.
*/
public void testWithType() throws Exception
{
Object ob = new Impl("abc", "def");
JavaType type = MAPPER.constructType(Base.class);
assertEquals("do({\"a\":\"abc\"})",
MAPPER.writeValueAsString(new JSONPObject("do", ob, type)));
}
public void testGeneralWrapping() throws Exception
{
JSONWrappedObject input = new JSONWrappedObject("/*Foo*/", "\n// the end",
Arrays.asList());
assertEquals("/*Foo*/[]\n// the end", MAPPER.writeValueAsString(input));
}
}