1
- package com .fasterxml .jackson .databind .ser ;
1
+ package com .fasterxml .jackson .databind .filter ;
2
2
3
3
import java .io .IOException ;
4
4
import java .util .*;
5
5
6
6
import com .fasterxml .jackson .annotation .JsonInclude ;
7
+ import com .fasterxml .jackson .annotation .JsonPropertyOrder ;
7
8
import com .fasterxml .jackson .databind .*;
8
9
import com .fasterxml .jackson .databind .annotation .JsonSerialize ;
9
10
12
13
* {@link JsonSerialize#include} annotation property work
13
14
* as expected.
14
15
*/
15
- public class TestNullProperties
16
+ public class JsonIncludeTest
16
17
extends BaseMapTest
17
18
{
18
- /*
19
- /**********************************************************
20
- /* Helper beans
21
- /**********************************************************
22
- */
23
-
24
19
static class SimpleBean
25
20
{
26
21
public String getA () { return "a" ; }
@@ -47,6 +42,23 @@ static class NonDefaultBean
47
42
public String getB () { return _b ; }
48
43
}
49
44
45
+ // [databind#998]: Do not require no-arg constructor; but if not, defaults check
46
+ // has weaker interpretation
47
+ @ JsonPropertyOrder ({ "x" , "y" , "z" })
48
+ @ JsonInclude (JsonInclude .Include .NON_DEFAULT )
49
+ static class NonDefaultBeanXYZ
50
+ {
51
+ public int x ;
52
+ public int y = 3 ;
53
+ public int z = 7 ;
54
+
55
+ NonDefaultBeanXYZ (int x , int y , int z ) {
56
+ this .x = x ;
57
+ this .y = y ;
58
+ this .z = z ;
59
+ }
60
+ }
61
+
50
62
static class MixedBean
51
63
{
52
64
String _a = "a" , _b = "b" ;
@@ -76,11 +88,12 @@ static class ArrayBean {
76
88
/* Unit tests
77
89
/**********************************************************
78
90
*/
79
-
91
+
92
+ final private ObjectMapper MAPPER = new ObjectMapper ();
93
+
80
94
public void testGlobal () throws IOException
81
95
{
82
- ObjectMapper m = new ObjectMapper ();
83
- Map <String ,Object > result = writeAndMap (m , new SimpleBean ());
96
+ Map <String ,Object > result = writeAndMap (MAPPER , new SimpleBean ());
84
97
assertEquals (2 , result .size ());
85
98
assertEquals ("a" , result .get ("a" ));
86
99
assertNull (result .get ("b" ));
@@ -89,8 +102,7 @@ public void testGlobal() throws IOException
89
102
90
103
public void testNonNullByClass () throws IOException
91
104
{
92
- ObjectMapper m = new ObjectMapper ();
93
- Map <String ,Object > result = writeAndMap (m , new NoNullsBean ());
105
+ Map <String ,Object > result = writeAndMap (MAPPER , new NoNullsBean ());
94
106
assertEquals (1 , result .size ());
95
107
assertFalse (result .containsKey ("a" ));
96
108
assertNull (result .get ("a" ));
@@ -100,48 +112,51 @@ public void testNonNullByClass() throws IOException
100
112
101
113
public void testNonDefaultByClass () throws IOException
102
114
{
103
- ObjectMapper m = new ObjectMapper ();
104
115
NonDefaultBean bean = new NonDefaultBean ();
105
116
// need to change one of defaults
106
117
bean ._a = "notA" ;
107
- Map <String ,Object > result = writeAndMap (m , bean );
118
+ Map <String ,Object > result = writeAndMap (MAPPER , bean );
108
119
assertEquals (1 , result .size ());
109
120
assertTrue (result .containsKey ("a" ));
110
121
assertEquals ("notA" , result .get ("a" ));
111
122
assertFalse (result .containsKey ("b" ));
112
123
assertNull (result .get ("b" ));
113
124
}
114
125
126
+ // [databind#998]
127
+ public void testNonDefaultByClassNoCtor () throws IOException
128
+ {
129
+ NonDefaultBeanXYZ bean = new NonDefaultBeanXYZ (1 , 2 , 0 );
130
+ String json = MAPPER .writeValueAsString (bean );
131
+ assertEquals (aposToQuotes ("{'x':1,'y':2}" ), json );
132
+ }
133
+
115
134
public void testMixedMethod () throws IOException
116
135
{
117
- ObjectMapper m = new ObjectMapper ();
118
-
119
136
MixedBean bean = new MixedBean ();
120
137
bean ._a = "xyz" ;
121
138
bean ._b = null ;
122
- Map <String ,Object > result = writeAndMap (m , bean );
139
+ Map <String ,Object > result = writeAndMap (MAPPER , bean );
123
140
assertEquals (1 , result .size ());
124
141
assertEquals ("xyz" , result .get ("a" ));
125
142
assertFalse (result .containsKey ("b" ));
126
143
127
144
bean ._a = "a" ;
128
145
bean ._b = "b" ;
129
- result = writeAndMap (m , bean );
146
+ result = writeAndMap (MAPPER , bean );
130
147
assertEquals (1 , result .size ());
131
148
assertEquals ("b" , result .get ("b" ));
132
149
assertFalse (result .containsKey ("a" ));
133
150
}
134
151
135
152
public void testDefaultForEmptyList () throws IOException
136
153
{
137
- ObjectMapper m = new ObjectMapper ();
138
- assertEquals ("{}" , m .writeValueAsString (new ListBean ()));
154
+ assertEquals ("{}" , MAPPER .writeValueAsString (new ListBean ()));
139
155
}
140
156
141
- // [JACKSON-531]: make NON_DEFAULT work for arrays too
157
+ // NON_DEFAULT shoud work for arrays too
142
158
public void testNonEmptyDefaultArray () throws IOException
143
159
{
144
- ObjectMapper m = new ObjectMapper ();
145
- assertEquals ("{}" , m .writeValueAsString (new ArrayBean ()));
160
+ assertEquals ("{}" , MAPPER .writeValueAsString (new ArrayBean ()));
146
161
}
147
162
}
0 commit comments