Skip to content

Commit 57e3afb

Browse files
committed
Update JSONEncoder.
1 parent d4e7940 commit 57e3afb

10 files changed

Lines changed: 620 additions & 821 deletions

File tree

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ private void encode(Map<?, ?> map, Writer writer) throws IOException {
177177
throw new IllegalArgumentException("Missing key.");
178178
}
179179

180+
var value = entry.getValue();
181+
182+
if (value == null) {
183+
continue;
184+
}
185+
180186
if (i > 0) {
181187
writer.write(",");
182188
}
@@ -195,7 +201,7 @@ private void encode(Map<?, ?> map, Writer writer) throws IOException {
195201
writer.write(" ");
196202
}
197203

198-
encode(entry.getValue(), writer);
204+
encode(value, writer);
199205

200206
i++;
201207
}

kilo-test/src/test/java/org/httprpc/kilo/test/DocumentationTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,12 @@ public class DocumentationTest {
3030

3131
@Test
3232
public void testDocumentation() throws IOException {
33-
testDocumentation("math");
33+
testDocumentation("bulk-upload");
3434
testDocumentation("catalog");
35+
testDocumentation("employees");
36+
testDocumentation("math");
37+
testDocumentation("members");
38+
testDocumentation("salaries");
3539
testDocumentation("test");
3640
}
3741

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"endpoints": [
3+
{
4+
"operations": [
5+
{
6+
"bodyParameter": {
7+
"name": "body",
8+
"required": true,
9+
"type": {
10+
"intrinsic": true,
11+
"iterable": false,
12+
"map": false,
13+
"name": "Void"
14+
}
15+
},
16+
"deprecated": false,
17+
"formData": false,
18+
"method": "POST",
19+
"parameters": true,
20+
"pathParameters": [
21+
],
22+
"produces": {
23+
"intrinsic": true,
24+
"iterable": false,
25+
"map": false,
26+
"name": "int"
27+
},
28+
"queryParameters": [
29+
]
30+
}
31+
],
32+
"path": "/bulk-upload/csv"
33+
},
34+
{
35+
"operations": [
36+
{
37+
"bodyParameter": {
38+
"name": "body",
39+
"required": true,
40+
"type": {
41+
"intrinsic": true,
42+
"iterable": false,
43+
"map": false,
44+
"name": "Void"
45+
}
46+
},
47+
"deprecated": false,
48+
"formData": false,
49+
"method": "POST",
50+
"parameters": true,
51+
"pathParameters": [
52+
],
53+
"produces": {
54+
"intrinsic": true,
55+
"iterable": false,
56+
"map": false,
57+
"name": "int"
58+
},
59+
"queryParameters": [
60+
]
61+
}
62+
],
63+
"path": "/bulk-upload/json"
64+
}
65+
],
66+
"enumerations": [
67+
],
68+
"path": "/bulk-upload",
69+
"structures": [
70+
]
71+
}

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

Lines changed: 19 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
{
55
"operations": [
66
{
7-
"bodyParameter": null,
87
"deprecated": false,
98
"description": "Returns a list of all items in the catalog.",
109
"formData": false,
@@ -14,20 +13,15 @@
1413
],
1514
"produces": {
1615
"elementType": {
17-
"elementType": null,
1816
"intrinsic": false,
1917
"iterable": false,
20-
"keyType": null,
2118
"map": false,
22-
"name": "Item",
23-
"valueType": null
19+
"name": "Item"
2420
},
2521
"intrinsic": true,
2622
"iterable": true,
27-
"keyType": null,
2823
"map": false,
29-
"name": "Iterable",
30-
"valueType": null
24+
"name": "Iterable"
3125
},
3226
"queryParameters": [
3327
]
@@ -38,13 +32,10 @@
3832
"name": "item",
3933
"required": true,
4034
"type": {
41-
"elementType": null,
4235
"intrinsic": false,
4336
"iterable": false,
44-
"keyType": null,
4537
"map": false,
46-
"name": "ItemDetail",
47-
"valueType": null
38+
"name": "ItemDetail"
4839
}
4940
},
5041
"deprecated": false,
@@ -55,13 +46,10 @@
5546
"pathParameters": [
5647
],
5748
"produces": {
58-
"elementType": null,
5949
"intrinsic": false,
6050
"iterable": false,
61-
"keyType": null,
6251
"map": false,
63-
"name": "ItemDetail",
64-
"valueType": null
52+
"name": "ItemDetail"
6553
},
6654
"queryParameters": [
6755
]
@@ -72,7 +60,6 @@
7260
{
7361
"operations": [
7462
{
75-
"bodyParameter": null,
7663
"deprecated": false,
7764
"description": "Returns detailed information about a specific item.",
7865
"formData": false,
@@ -84,24 +71,18 @@
8471
"name": "itemID",
8572
"required": true,
8673
"type": {
87-
"elementType": null,
8874
"intrinsic": true,
8975
"iterable": false,
90-
"keyType": null,
9176
"map": false,
92-
"name": "Integer",
93-
"valueType": null
77+
"name": "Integer"
9478
}
9579
}
9680
],
9781
"produces": {
98-
"elementType": null,
9982
"intrinsic": false,
10083
"iterable": false,
101-
"keyType": null,
10284
"map": false,
103-
"name": "ItemDetail",
104-
"valueType": null
85+
"name": "ItemDetail"
10586
},
10687
"queryParameters": [
10788
]
@@ -112,13 +93,10 @@
11293
"name": "item",
11394
"required": true,
11495
"type": {
115-
"elementType": null,
11696
"intrinsic": false,
11797
"iterable": false,
118-
"keyType": null,
11998
"map": false,
120-
"name": "ItemDetail",
121-
"valueType": null
99+
"name": "ItemDetail"
122100
}
123101
},
124102
"deprecated": false,
@@ -132,30 +110,23 @@
132110
"name": "itemID",
133111
"required": true,
134112
"type": {
135-
"elementType": null,
136113
"intrinsic": true,
137114
"iterable": false,
138-
"keyType": null,
139115
"map": false,
140-
"name": "Integer",
141-
"valueType": null
116+
"name": "Integer"
142117
}
143118
}
144119
],
145120
"produces": {
146-
"elementType": null,
147121
"intrinsic": false,
148122
"iterable": false,
149-
"keyType": null,
150123
"map": false,
151-
"name": "ItemDetail",
152-
"valueType": null
124+
"name": "ItemDetail"
153125
},
154126
"queryParameters": [
155127
]
156128
},
157129
{
158-
"bodyParameter": null,
159130
"deprecated": false,
160131
"description": "Deletes an item.",
161132
"formData": false,
@@ -167,24 +138,18 @@
167138
"name": "itemID",
168139
"required": true,
169140
"type": {
170-
"elementType": null,
171141
"intrinsic": true,
172142
"iterable": false,
173-
"keyType": null,
174143
"map": false,
175-
"name": "Integer",
176-
"valueType": null
144+
"name": "Integer"
177145
}
178146
}
179147
],
180148
"produces": {
181-
"elementType": null,
182149
"intrinsic": true,
183150
"iterable": false,
184-
"keyType": null,
185151
"map": false,
186-
"name": "void",
187-
"valueType": null
152+
"name": "void"
188153
},
189154
"queryParameters": [
190155
]
@@ -228,13 +193,10 @@
228193
"name": "description",
229194
"required": true,
230195
"type": {
231-
"elementType": null,
232196
"intrinsic": true,
233197
"iterable": false,
234-
"keyType": null,
235198
"map": false,
236-
"name": "String",
237-
"valueType": null
199+
"name": "String"
238200
}
239201
},
240202
{
@@ -243,13 +205,10 @@
243205
"name": "id",
244206
"required": false,
245207
"type": {
246-
"elementType": null,
247208
"intrinsic": true,
248209
"iterable": false,
249-
"keyType": null,
250210
"map": false,
251-
"name": "Integer",
252-
"valueType": null
211+
"name": "Integer"
253212
}
254213
},
255214
{
@@ -258,13 +217,10 @@
258217
"name": "price",
259218
"required": true,
260219
"type": {
261-
"elementType": null,
262220
"intrinsic": true,
263221
"iterable": false,
264-
"keyType": null,
265222
"map": false,
266-
"name": "Double",
267-
"valueType": null
223+
"name": "Double"
268224
}
269225
}
270226
],
@@ -281,13 +237,10 @@
281237
"name": "color",
282238
"required": false,
283239
"type": {
284-
"elementType": null,
285240
"intrinsic": true,
286241
"iterable": false,
287-
"keyType": null,
288242
"map": false,
289-
"name": "String",
290-
"valueType": null
243+
"name": "String"
291244
}
292245
},
293246
{
@@ -296,13 +249,10 @@
296249
"name": "created",
297250
"required": false,
298251
"type": {
299-
"elementType": null,
300252
"intrinsic": true,
301253
"iterable": false,
302-
"keyType": null,
303254
"map": false,
304-
"name": "Instant",
305-
"valueType": null
255+
"name": "Instant"
306256
}
307257
},
308258
{
@@ -311,13 +261,10 @@
311261
"name": "size",
312262
"required": false,
313263
"type": {
314-
"elementType": null,
315264
"intrinsic": false,
316265
"iterable": false,
317-
"keyType": null,
318266
"map": false,
319-
"name": "Size",
320-
"valueType": null
267+
"name": "Size"
321268
}
322269
},
323270
{
@@ -326,25 +273,19 @@
326273
"name": "weight",
327274
"required": false,
328275
"type": {
329-
"elementType": null,
330276
"intrinsic": true,
331277
"iterable": false,
332-
"keyType": null,
333278
"map": false,
334-
"name": "Double",
335-
"valueType": null
279+
"name": "Double"
336280
}
337281
}
338282
],
339283
"supertypes": [
340284
{
341-
"elementType": null,
342285
"intrinsic": false,
343286
"iterable": false,
344-
"keyType": null,
345287
"map": false,
346-
"name": "Item",
347-
"valueType": null
288+
"name": "Item"
348289
}
349290
]
350291
}

0 commit comments

Comments
 (0)