1 package com.fasterxml.jackson.databind.views;
2 
3 import java.io.*;
4 
5 import com.fasterxml.jackson.annotation.*;
6 
7 import com.fasterxml.jackson.databind.*;
8 
9 public class TestViewsSerialization2 extends BaseMapTest
10 {
11     /*
12     /************************************************************************
13     /* Helper classes
14     /************************************************************************
15      */
16 
17     static class Views
18     {
19         public interface View { }
20         public interface ExtendedView  extends View { }
21     }
22 
23   static class ComplexTestData
24   {
25     String nameNull = null;
26 
27     String nameComplex = "complexValue";
28 
29     String nameComplexHidden = "nameComplexHiddenValue";
30 
31     SimpleTestData testData = new SimpleTestData( );
32 
33     SimpleTestData[] testDataArray = new SimpleTestData[] { new SimpleTestData( ), null };
34 
35     @JsonView( Views.View.class )
getNameNull()36     public String getNameNull()
37     {
38       return nameNull;
39     }
40 
setNameNull( String nameNull )41     public void setNameNull( String nameNull )
42     {
43       this.nameNull = nameNull;
44     }
45 
46     @JsonView( Views.View.class )
getNameComplex()47     public String getNameComplex()
48     {
49       return nameComplex;
50     }
51 
setNameComplex( String nameComplex )52     public void setNameComplex( String nameComplex )
53     {
54       this.nameComplex = nameComplex;
55     }
56 
getNameComplexHidden()57     public String getNameComplexHidden()
58     {
59       return nameComplexHidden;
60     }
61 
setNameComplexHidden( String nameComplexHidden )62     public void setNameComplexHidden( String nameComplexHidden )
63     {
64       this.nameComplexHidden = nameComplexHidden;
65     }
66 
67     @JsonView( Views.View.class )
getTestData()68     public SimpleTestData getTestData()
69     {
70       return testData;
71     }
72 
setTestData( SimpleTestData testData )73     public void setTestData( SimpleTestData testData )
74     {
75       this.testData = testData;
76     }
77 
78     @JsonView( Views.View.class )
getTestDataArray()79     public SimpleTestData[] getTestDataArray()
80     {
81       return testDataArray;
82     }
83 
setTestDataArray( SimpleTestData[] testDataArray )84     public void setTestDataArray( SimpleTestData[] testDataArray )
85     {
86       this.testDataArray = testDataArray;
87     }
88   }
89 
90   static class SimpleTestData
91   {
92     String name = "shown";
93 
94     String nameHidden = "hidden";
95 
96     @JsonView( Views.View.class )
getName()97     public String getName()
98     {
99       return name;
100     }
101 
setName( String name )102     public void setName( String name )
103     {
104       this.name = name;
105     }
106 
getNameHidden( )107     public String getNameHidden( )
108     {
109       return nameHidden;
110     }
111 
setNameHidden( String nameHidden )112     public void setNameHidden( String nameHidden )
113     {
114       this.nameHidden = nameHidden;
115     }
116     }
117 
118     /*
119     /************************************************************************
120     /* Tests
121     /************************************************************************
122      */
123 
testDataBindingUsage( )124     public void testDataBindingUsage( ) throws Exception
125     {
126         ObjectMapper mapper = createMapper();
127         String result = serializeWithObjectMapper(new ComplexTestData( ), Views.View.class, mapper);
128         assertEquals(-1, result.indexOf( "nameHidden" ));
129     }
130 
testDataBindingUsageWithoutView( )131     public void testDataBindingUsageWithoutView( ) throws Exception
132     {
133         ObjectMapper mapper = createMapper();
134         String json = serializeWithObjectMapper(new ComplexTestData( ), null, mapper);
135         assertTrue(json.indexOf( "nameHidden" ) > 0);
136     }
137 
138     /*
139     /************************************************************************
140     /* Helper  methods
141     /************************************************************************
142      */
143 
createMapper()144     private ObjectMapper createMapper()
145     {
146         ObjectMapper mapper = jsonMapperBuilder()
147                 .configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false )
148                 .serializationInclusion(JsonInclude.Include.NON_NULL )
149                 .configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false )
150                 .build();
151         return mapper;
152     }
153 
serializeWithObjectMapper(Object object, Class<? extends Views.View> view, ObjectMapper mapper )154     private String serializeWithObjectMapper(Object object, Class<? extends Views.View> view, ObjectMapper mapper )
155             throws IOException
156     {
157         return mapper.writerWithView(view).writeValueAsString(object);
158     }
159 
160   }