• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.deser;
2 
3 import java.util.List;
4 
5 import com.fasterxml.jackson.annotation.JsonCreator;
6 import com.fasterxml.jackson.databind.BaseMapTest;
7 import com.fasterxml.jackson.databind.ObjectMapper;
8 
9 public class TestObjectOrArrayDeserialization extends BaseMapTest
10 {
11     public static class SomeObject {
12         public String someField;
13     }
14 
15     public static class ArrayOrObject {
16         private final List<SomeObject> objects;
17         private final SomeObject object;
18 
19         @JsonCreator
ArrayOrObject(List<SomeObject> objects)20         public ArrayOrObject(List<SomeObject> objects) {
21             this.objects = objects;
22             this.object = null;
23         }
24 
25         @JsonCreator
ArrayOrObject(SomeObject object)26         public ArrayOrObject(SomeObject object) {
27             this.objects = null;
28             this.object = object;
29         }
30     }
31 
testObjectCase()32     public void testObjectCase() throws Exception {
33         ArrayOrObject arrayOrObject = new ObjectMapper().readValue("{}", ArrayOrObject.class);
34         assertNull("expected objects field to be null", arrayOrObject.objects);
35         assertNotNull("expected object field not to be null", arrayOrObject.object);
36     }
37 
testEmptyArrayCase()38     public void testEmptyArrayCase() throws Exception {
39         ArrayOrObject arrayOrObject = new ObjectMapper().readValue("[]", ArrayOrObject.class);
40         assertNotNull("expected objects field not to be null", arrayOrObject.objects);
41         assertTrue("expected objects field to be an empty list", arrayOrObject.objects.isEmpty());
42         assertNull("expected object field to be null", arrayOrObject.object);
43     }
44 
testNotEmptyArrayCase()45     public void testNotEmptyArrayCase() throws Exception {
46         ArrayOrObject arrayOrObject = new ObjectMapper().readValue("[{}, {}]", ArrayOrObject.class);
47         assertNotNull("expected objects field not to be null", arrayOrObject.objects);
48         assertEquals("expected objects field to have size 2", 2, arrayOrObject.objects.size());
49         assertNull("expected object field to be null", arrayOrObject.object);
50     }
51 
52 }
53