package com.fasterxml.jackson.databind.access;
import java.util.*;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
/**
* Separate tests located in different package than code being
* exercised; needed to trigger some access-related failures.
*/
public class TestAnyGetterAccess
extends BaseMapTest
{
/*
/**********************************************************
/* Helper bean classes
/**********************************************************
*/
static class DynaBean {
public int id;
protected HashMap<String,String> other = new HashMap<String,String>();
@JsonAnyGetter
public Map<String,String> any() {
return other;
}
@JsonAnySetter
public void set(String name, String value) {
other.put(name, value);
}
}
static class PrivateThing
{
@JsonAnyGetter
public Map<?,?> getProperties()
{
HashMap<String,String> map = new HashMap<String,String>();
map.put("a", "A");
return map;
}
}
/*
/**********************************************************
/* Test cases
/**********************************************************
*/
private final ObjectMapper MAPPER = new ObjectMapper();
public void testDynaBean() throws Exception
{
DynaBean b = new DynaBean();
b.id = 123;
b.set("name", "Billy");
assertEquals("{\"id\":123,\"name\":\"Billy\"}", MAPPER.writeValueAsString(b));
DynaBean result = MAPPER.readValue("{\"id\":2,\"name\":\"Joe\"}", DynaBean.class);
assertEquals(2, result.id);
assertEquals("Joe", result.other.get("name"));
}
public void testPrivate() throws Exception
{
String json = MAPPER.writeValueAsString(new PrivateThing());
assertEquals("{\"a\":\"A\"}", json);
}
}