• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.ser;
2 
3 import java.util.*;
4 
5 import com.fasterxml.jackson.annotation.*;
6 
7 import com.fasterxml.jackson.databind.*;
8 import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
9 
10 /**
11  * Unit tests for checking extended auto-detect configuration,
12  * in context of serialization
13  */
14 public class TestAutoDetect
15     extends BaseMapTest
16 {
17     static class FieldBean
18     {
19         public String p1 = "public";
20         protected String p2 = "protected";
21         @SuppressWarnings("unused")
22         private String p3 = "private";
23     }
24 
25     @JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.PROTECTED_AND_PUBLIC)
26     static class ProtFieldBean extends FieldBean { }
27 
28     static class MethodBean
29     {
getA()30         public String getA() { return "a"; }
getB()31         protected String getB() { return "b"; }
32         @SuppressWarnings("unused")
getC()33         private String getC() { return "c"; }
34     }
35 
36     @JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.PROTECTED_AND_PUBLIC)
37     static class ProtMethodBean extends MethodBean { }
38 
39     /*
40     /*********************************************************
41     /* Test methods
42     /*********************************************************
43      */
44 
45     private final ObjectMapper MAPPER = newJsonMapper();
46 
testDefaults()47     public void testDefaults() throws Exception
48     {
49         // by default, only public fields and getters are detected
50         assertEquals("{\"p1\":\"public\"}",
51                 MAPPER.writeValueAsString(new FieldBean()));
52         assertEquals("{\"a\":\"a\"}",
53                 MAPPER.writeValueAsString(new MethodBean()));
54     }
55 
testProtectedViaAnnotations()56     public void testProtectedViaAnnotations() throws Exception
57     {
58         Map<String,Object> result = writeAndMap(MAPPER, new ProtFieldBean());
59         assertEquals(2, result.size());
60         assertEquals("public", result.get("p1"));
61         assertEquals("protected", result.get("p2"));
62         assertNull(result.get("p3"));
63 
64         result = writeAndMap(MAPPER, new ProtMethodBean());
65         assertEquals(2, result.size());
66         assertEquals("a", result.get("a"));
67         assertEquals("b", result.get("b"));
68         assertNull(result.get("c"));
69     }
70 
testPrivateUsingGlobals()71     public void testPrivateUsingGlobals() throws Exception
72     {
73         ObjectMapper m = new ObjectMapper();
74         VisibilityChecker<?> vc = m.getVisibilityChecker();
75         vc = vc.withFieldVisibility(JsonAutoDetect.Visibility.ANY);
76         m.setVisibility(vc);
77 
78         Map<String,Object> result = writeAndMap(m, new FieldBean());
79         assertEquals(3, result.size());
80         assertEquals("public", result.get("p1"));
81         assertEquals("protected", result.get("p2"));
82         assertEquals("private", result.get("p3"));
83 
84         m = new ObjectMapper();
85         vc = m.getVisibilityChecker();
86         vc = vc.withGetterVisibility(JsonAutoDetect.Visibility.ANY);
87         m.setVisibility(vc);
88         result = writeAndMap(m, new MethodBean());
89         assertEquals(3, result.size());
90         assertEquals("a", result.get("a"));
91         assertEquals("b", result.get("b"));
92         assertEquals("c", result.get("c"));
93     }
94 
testBasicSetup()95     public void testBasicSetup() throws Exception
96     {
97         ObjectMapper m = new ObjectMapper();
98         VisibilityChecker<?> vc = m.getVisibilityChecker();
99         vc = vc.with(JsonAutoDetect.Visibility.ANY);
100         m.setVisibility(vc);
101 
102         Map<String,Object> result = writeAndMap(m, new FieldBean());
103         assertEquals(3, result.size());
104         assertEquals("public", result.get("p1"));
105         assertEquals("protected", result.get("p2"));
106         assertEquals("private", result.get("p3"));
107     }
108 
testMapperShortcutMethods()109     public void testMapperShortcutMethods() throws Exception
110     {
111         ObjectMapper m = new ObjectMapper();
112         m.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
113 
114         Map<String,Object> result = writeAndMap(m, new FieldBean());
115         assertEquals(3, result.size());
116         assertEquals("public", result.get("p1"));
117         assertEquals("protected", result.get("p2"));
118         assertEquals("private", result.get("p3"));
119     }
120 }
121