Skip to content

Commit 874ac69

Browse files
committed
Update JSONEncoder.
1 parent b0dd597 commit 874ac69

12 files changed

Lines changed: 1139 additions & 240 deletions

File tree

kilo-client/src/main/java/org/httprpc/kilo/io/JSONEncoder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ private void encode(Map<?, ?> map, Writer writer) throws IOException {
179179

180180
var value = entry.getValue();
181181

182-
if (value == null) {
182+
if (value == null && compact) {
183183
continue;
184184
}
185185

kilo-client/src/test/java/org/httprpc/kilo/io/JSONEncoderTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ public void testCompact() throws IOException {
203203
var map = mapOf(
204204
entry("a", 1),
205205
entry("b", 2),
206-
entry("c", 3)
206+
entry("c", 3),
207+
entry("d", null)
207208
);
208209

209210
var actual = encode(map, () -> new JSONEncoder(true));

kilo-test/src/test/resources/org/httprpc/kilo/test/api/bulk-upload.json

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,38 @@
11
{
2+
"description": null,
23
"endpoints": [
34
{
45
"operations": [
56
{
67
"bodyParameter": {
8+
"description": null,
79
"name": "body",
810
"required": true,
911
"type": {
12+
"elementType": null,
1013
"intrinsic": true,
1114
"iterable": false,
15+
"keyType": null,
1216
"map": false,
13-
"name": "Void"
17+
"name": "Void",
18+
"valueType": null
1419
}
1520
},
1621
"deprecated": false,
22+
"description": null,
1723
"formData": false,
1824
"method": "POST",
1925
"parameters": true,
2026
"pathParameters": [
2127
],
2228
"produces": {
29+
"elementType": null,
2330
"intrinsic": true,
2431
"iterable": false,
32+
"keyType": null,
2533
"map": false,
26-
"name": "int"
34+
"name": "int",
35+
"valueType": null
2736
},
2837
"queryParameters": [
2938
]
@@ -35,26 +44,34 @@
3544
"operations": [
3645
{
3746
"bodyParameter": {
47+
"description": null,
3848
"name": "body",
3949
"required": true,
4050
"type": {
51+
"elementType": null,
4152
"intrinsic": true,
4253
"iterable": false,
54+
"keyType": null,
4355
"map": false,
44-
"name": "Void"
56+
"name": "Void",
57+
"valueType": null
4558
}
4659
},
4760
"deprecated": false,
61+
"description": null,
4862
"formData": false,
4963
"method": "POST",
5064
"parameters": true,
5165
"pathParameters": [
5266
],
5367
"produces": {
68+
"elementType": null,
5469
"intrinsic": true,
5570
"iterable": false,
71+
"keyType": null,
5672
"map": false,
57-
"name": "int"
73+
"name": "int",
74+
"valueType": null
5875
},
5976
"queryParameters": [
6077
]

kilo-test/src/test/resources/org/httprpc/kilo/test/api/catalog.json

Lines changed: 78 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
{
55
"operations": [
66
{
7+
"bodyParameter": null,
78
"deprecated": false,
89
"description": "Returns a list of all items in the catalog.",
910
"formData": false,
@@ -13,15 +14,20 @@
1314
],
1415
"produces": {
1516
"elementType": {
17+
"elementType": null,
1618
"intrinsic": false,
1719
"iterable": false,
20+
"keyType": null,
1821
"map": false,
19-
"name": "Item"
22+
"name": "Item",
23+
"valueType": null
2024
},
2125
"intrinsic": true,
2226
"iterable": true,
27+
"keyType": null,
2328
"map": false,
24-
"name": "Iterable"
29+
"name": "Iterable",
30+
"valueType": null
2531
},
2632
"queryParameters": [
2733
]
@@ -32,10 +38,13 @@
3238
"name": "item",
3339
"required": true,
3440
"type": {
41+
"elementType": null,
3542
"intrinsic": false,
3643
"iterable": false,
44+
"keyType": null,
3745
"map": false,
38-
"name": "ItemDetail"
46+
"name": "ItemDetail",
47+
"valueType": null
3948
}
4049
},
4150
"deprecated": false,
@@ -46,10 +55,13 @@
4655
"pathParameters": [
4756
],
4857
"produces": {
58+
"elementType": null,
4959
"intrinsic": false,
5060
"iterable": false,
61+
"keyType": null,
5162
"map": false,
52-
"name": "ItemDetail"
63+
"name": "ItemDetail",
64+
"valueType": null
5365
},
5466
"queryParameters": [
5567
]
@@ -60,6 +72,7 @@
6072
{
6173
"operations": [
6274
{
75+
"bodyParameter": null,
6376
"deprecated": false,
6477
"description": "Returns detailed information about a specific item.",
6578
"formData": false,
@@ -71,18 +84,24 @@
7184
"name": "itemID",
7285
"required": true,
7386
"type": {
87+
"elementType": null,
7488
"intrinsic": true,
7589
"iterable": false,
90+
"keyType": null,
7691
"map": false,
77-
"name": "Integer"
92+
"name": "Integer",
93+
"valueType": null
7894
}
7995
}
8096
],
8197
"produces": {
98+
"elementType": null,
8299
"intrinsic": false,
83100
"iterable": false,
101+
"keyType": null,
84102
"map": false,
85-
"name": "ItemDetail"
103+
"name": "ItemDetail",
104+
"valueType": null
86105
},
87106
"queryParameters": [
88107
]
@@ -93,10 +112,13 @@
93112
"name": "item",
94113
"required": true,
95114
"type": {
115+
"elementType": null,
96116
"intrinsic": false,
97117
"iterable": false,
118+
"keyType": null,
98119
"map": false,
99-
"name": "ItemDetail"
120+
"name": "ItemDetail",
121+
"valueType": null
100122
}
101123
},
102124
"deprecated": false,
@@ -110,23 +132,30 @@
110132
"name": "itemID",
111133
"required": true,
112134
"type": {
135+
"elementType": null,
113136
"intrinsic": true,
114137
"iterable": false,
138+
"keyType": null,
115139
"map": false,
116-
"name": "Integer"
140+
"name": "Integer",
141+
"valueType": null
117142
}
118143
}
119144
],
120145
"produces": {
146+
"elementType": null,
121147
"intrinsic": false,
122148
"iterable": false,
149+
"keyType": null,
123150
"map": false,
124-
"name": "ItemDetail"
151+
"name": "ItemDetail",
152+
"valueType": null
125153
},
126154
"queryParameters": [
127155
]
128156
},
129157
{
158+
"bodyParameter": null,
130159
"deprecated": false,
131160
"description": "Deletes an item.",
132161
"formData": false,
@@ -138,18 +167,24 @@
138167
"name": "itemID",
139168
"required": true,
140169
"type": {
170+
"elementType": null,
141171
"intrinsic": true,
142172
"iterable": false,
173+
"keyType": null,
143174
"map": false,
144-
"name": "Integer"
175+
"name": "Integer",
176+
"valueType": null
145177
}
146178
}
147179
],
148180
"produces": {
181+
"elementType": null,
149182
"intrinsic": true,
150183
"iterable": false,
184+
"keyType": null,
151185
"map": false,
152-
"name": "void"
186+
"name": "void",
187+
"valueType": null
153188
},
154189
"queryParameters": [
155190
]
@@ -193,10 +228,13 @@
193228
"name": "description",
194229
"required": true,
195230
"type": {
231+
"elementType": null,
196232
"intrinsic": true,
197233
"iterable": false,
234+
"keyType": null,
198235
"map": false,
199-
"name": "String"
236+
"name": "String",
237+
"valueType": null
200238
}
201239
},
202240
{
@@ -205,10 +243,13 @@
205243
"name": "id",
206244
"required": false,
207245
"type": {
246+
"elementType": null,
208247
"intrinsic": true,
209248
"iterable": false,
249+
"keyType": null,
210250
"map": false,
211-
"name": "Integer"
251+
"name": "Integer",
252+
"valueType": null
212253
}
213254
},
214255
{
@@ -217,10 +258,13 @@
217258
"name": "price",
218259
"required": true,
219260
"type": {
261+
"elementType": null,
220262
"intrinsic": true,
221263
"iterable": false,
264+
"keyType": null,
222265
"map": false,
223-
"name": "Double"
266+
"name": "Double",
267+
"valueType": null
224268
}
225269
}
226270
],
@@ -237,10 +281,13 @@
237281
"name": "color",
238282
"required": false,
239283
"type": {
284+
"elementType": null,
240285
"intrinsic": true,
241286
"iterable": false,
287+
"keyType": null,
242288
"map": false,
243-
"name": "String"
289+
"name": "String",
290+
"valueType": null
244291
}
245292
},
246293
{
@@ -249,10 +296,13 @@
249296
"name": "created",
250297
"required": false,
251298
"type": {
299+
"elementType": null,
252300
"intrinsic": true,
253301
"iterable": false,
302+
"keyType": null,
254303
"map": false,
255-
"name": "Instant"
304+
"name": "Instant",
305+
"valueType": null
256306
}
257307
},
258308
{
@@ -261,10 +311,13 @@
261311
"name": "size",
262312
"required": false,
263313
"type": {
314+
"elementType": null,
264315
"intrinsic": false,
265316
"iterable": false,
317+
"keyType": null,
266318
"map": false,
267-
"name": "Size"
319+
"name": "Size",
320+
"valueType": null
268321
}
269322
},
270323
{
@@ -273,19 +326,25 @@
273326
"name": "weight",
274327
"required": false,
275328
"type": {
329+
"elementType": null,
276330
"intrinsic": true,
277331
"iterable": false,
332+
"keyType": null,
278333
"map": false,
279-
"name": "Double"
334+
"name": "Double",
335+
"valueType": null
280336
}
281337
}
282338
],
283339
"supertypes": [
284340
{
341+
"elementType": null,
285342
"intrinsic": false,
286343
"iterable": false,
344+
"keyType": null,
287345
"map": false,
288-
"name": "Item"
346+
"name": "Item",
347+
"valueType": null
289348
}
290349
]
291350
}

0 commit comments

Comments
 (0)