1
1
package com .fasterxml .jackson .dataformat .ion .ionvalue ;
2
2
3
- import java .io .IOException ;
4
- import java .util .*;
5
-
6
- import com .amazon .ion .*;
3
+ import com .amazon .ion .IonSystem ;
4
+ import com .amazon .ion .IonValue ;
5
+ import com .amazon .ion .IonStruct ;
7
6
import com .amazon .ion .system .IonSystemBuilder ;
8
- import org . junit . jupiter . api . Test ;
9
-
10
- import com .fasterxml .jackson .annotation .* ;
7
+ import com . fasterxml . jackson . annotation . JsonAnyGetter ;
8
+ import com . fasterxml . jackson . annotation . JsonAnySetter ;
9
+ import com .fasterxml .jackson .annotation .JsonProperty ;
11
10
import com .fasterxml .jackson .databind .util .AccessPattern ;
12
11
import com .fasterxml .jackson .dataformat .ion .IonObjectMapper ;
12
+ import com .fasterxml .jackson .dataformat .ion .IonParser ;
13
+
14
+
15
+ import java .io .IOException ;
16
+ import java .util .HashMap ;
17
+ import java .util .Map ;
18
+ import java .util .Objects ;
19
+
20
+ import org .junit .jupiter .api .Test ;
13
21
14
22
import static com .fasterxml .jackson .databind .PropertyNamingStrategies .SNAKE_CASE ;
15
23
import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -65,7 +73,7 @@ static class IonValueData extends Data<IonValue> {
65
73
}
66
74
67
75
private static final IonSystem SYSTEM = IonSystemBuilder .standard ().build ();
68
- private static final IonValueMapper ION_VALUE_MAPPER = new IonValueMapper (SYSTEM , SNAKE_CASE );
76
+ private final IonValueMapper ION_VALUE_MAPPER = new IonValueMapper (SYSTEM , SNAKE_CASE );
69
77
70
78
@ Test
71
79
public void shouldBeAbleToDeserialize () throws Exception {
@@ -92,23 +100,49 @@ public void shouldBeAbleToDeserializeIncludingNullList() throws Exception {
92
100
}
93
101
94
102
@ Test
95
- public void shouldBeAbleToDeserializeNullList () throws Exception {
96
- IonValue ion = ion ("{c:null.list}" );
97
-
98
- IonValueData data = ION_VALUE_MAPPER .readValue (ion , IonValueData .class );
103
+ public void shouldBeAbleToDeserializeNullToIonNull () throws Exception {
104
+ String ion = "{c:null}" ;
105
+ verifyNullDeserialization (ion , SYSTEM .newNull ());
106
+ ION_VALUE_MAPPER .disable (IonParser .Feature .READ_NULL_AS_IONVALUE );
107
+ verifyNullDeserialization (ion , null );
108
+ }
99
109
100
- assertEquals (1 , data .getAllData ().size ());
101
- assertEquals (SYSTEM .newNullList (), data .getAllData ().get ("c" ));
110
+ @ Test
111
+ public void shouldBeAbleToDeserializeNullList () throws Exception {
112
+ String ion = "{c:null.list}" ;
113
+ verifyNullDeserialization (ion , SYSTEM .newNullList ());
114
+ ION_VALUE_MAPPER .disable (IonParser .Feature .READ_NULL_AS_IONVALUE );
115
+ verifyNullDeserialization (ion , SYSTEM .newNullList ());
102
116
}
103
117
104
118
@ Test
105
119
public void shouldBeAbleToDeserializeNullStruct () throws Exception {
106
- IonValue ion = ion ("{c:null.struct}" );
120
+ String ion = "{c:null.struct}" ;
121
+ verifyNullDeserialization (ion , SYSTEM .newNullStruct ());
122
+ ION_VALUE_MAPPER .disable (IonParser .Feature .READ_NULL_AS_IONVALUE );
123
+ verifyNullDeserialization (ion , SYSTEM .newNullStruct ());
124
+ }
107
125
108
- IonValueData data = ION_VALUE_MAPPER .readValue (ion , IonValueData .class );
126
+ @ Test
127
+ public void shouldBeAbleToDeserializeNullSexp () throws Exception {
128
+ String ion = "{c:null.sexp}" ;
129
+ verifyNullDeserialization (ion , SYSTEM .newNullSexp ());
130
+ ION_VALUE_MAPPER .disable (IonParser .Feature .READ_NULL_AS_IONVALUE );
131
+ verifyNullDeserialization (ion , SYSTEM .newNullSexp ());
132
+ }
133
+
134
+ private void verifyNullDeserialization (String ionString , IonValue expected ) throws Exception {
135
+
136
+ IonValueData data = ION_VALUE_MAPPER .readValue (ionString , IonValueData .class );
137
+
138
+ assertEquals (1 , data .getAllData ().size ());
139
+ assertEquals (expected , data .getAllData ().get ("c" ));
140
+
141
+ IonValue ion = ion (ionString );
142
+ data = ION_VALUE_MAPPER .readValue (ion , IonValueData .class );
109
143
110
144
assertEquals (1 , data .getAllData ().size ());
111
- assertEquals (SYSTEM . newNullStruct () , data .getAllData ().get ("c" ));
145
+ assertEquals (expected , data .getAllData ().get ("c" ));
112
146
}
113
147
114
148
@ Test
@@ -162,7 +196,17 @@ public void shouldBeAbleToSerializeAndDeserializeStringData() throws Exception {
162
196
163
197
IonValue data = ION_VALUE_MAPPER .writeValueAsIonValue (source );
164
198
StringData result = ION_VALUE_MAPPER .parse (data , StringData .class );
199
+ assertEquals (source , result );
200
+ }
201
+
202
+ @ Test
203
+ public void shouldBeAbleToSerializeAndDeserializeStringDataAsString () throws Exception {
204
+ StringData source = new StringData ();
205
+ source .put ("a" , "1" );
206
+ source .put ("b" , null );
165
207
208
+ String data = ION_VALUE_MAPPER .writeValueAsString (source );
209
+ StringData result = ION_VALUE_MAPPER .readValue (data , StringData .class );
166
210
assertEquals (source , result );
167
211
}
168
212
0 commit comments