• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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