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 }