1 package com.fasterxml.jackson.databind.views; 2 3 import java.io.IOException; 4 5 import com.fasterxml.jackson.annotation.*; 6 7 import com.fasterxml.jackson.databind.*; 8 9 // for [databind#507], supporting default views 10 public class DefaultViewTest extends BaseMapTest 11 { 12 // Classes that represent views 13 static class ViewA { } 14 static class ViewAA extends ViewA { } 15 static class ViewB { } 16 static class ViewBB extends ViewB { } 17 18 @JsonView(ViewA.class) 19 @JsonPropertyOrder({ "a", "b" }) 20 static class Defaulting { 21 public int a = 3; 22 23 @JsonView(ViewB.class) 24 public int b = 5; 25 } 26 27 /* 28 /********************************************************** 29 /* Unit tests 30 /********************************************************** 31 */ 32 33 private final ObjectMapper MAPPER = new ObjectMapper(); 34 testDeserialization()35 public void testDeserialization() throws IOException 36 { 37 final String JSON = aposToQuotes("{'a':1,'b':2}"); 38 39 // first: no views: 40 Defaulting result = MAPPER.readerFor(Defaulting.class) 41 .readValue(JSON); 42 assertEquals(result.a, 1); 43 assertEquals(result.b, 2); 44 45 // Then views; first A, then B(B) 46 result = MAPPER.readerFor(Defaulting.class) 47 .withView(ViewA.class) 48 .readValue(JSON); 49 assertEquals(result.a, 1); 50 assertEquals(result.b, 5); 51 52 result = MAPPER.readerFor(Defaulting.class) 53 .withView(ViewBB.class) 54 .readValue(JSON); 55 assertEquals(result.a, 3); 56 assertEquals(result.b, 2); 57 } 58 testSerialization()59 public void testSerialization() throws IOException 60 { 61 assertEquals(aposToQuotes("{'a':3,'b':5}"), 62 MAPPER.writeValueAsString(new Defaulting())); 63 64 assertEquals(aposToQuotes("{'a':3}"), 65 MAPPER.writerWithView(ViewA.class) 66 .writeValueAsString(new Defaulting())); 67 assertEquals(aposToQuotes("{'b':5}"), 68 MAPPER.writerWithView(ViewB.class) 69 .writeValueAsString(new Defaulting())); 70 } 71 } 72