Skip to content

Commit 127bc01

Browse files
committed
#22 - Add Builder for JsonStream
1 parent a375be4 commit 127bc01

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed

jsonb/src/main/java/io/avaje/jsonb/stream/JsonStream.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,47 @@
1212
*/
1313
public final class JsonStream implements JsonStreamAdapter {
1414

15+
/**
16+
* Used to build JsonStream with custom settings.
17+
*/
18+
public static final class Builder {
19+
20+
private boolean serializeNulls;
21+
private boolean serializeEmpty;
22+
private boolean failOnUnknown;
23+
24+
/**
25+
* Set to true to serialize nulls. Defaults to false.
26+
*/
27+
public Builder serializeNulls(boolean serializeNulls) {
28+
this.serializeNulls = serializeNulls;
29+
return this;
30+
}
31+
32+
/**
33+
* Set to true to serialize empty collections. Defaults to false.
34+
*/
35+
public Builder serializeEmpty(boolean serializeEmpty) {
36+
this.serializeEmpty = serializeEmpty;
37+
return this;
38+
}
39+
40+
/**
41+
* Set to true to fail on unknown properties. Defaults to false.
42+
*/
43+
public Builder failOnUnknown(boolean failOnUnknown) {
44+
this.failOnUnknown = failOnUnknown;
45+
return this;
46+
}
47+
48+
/**
49+
* Build and return the JsonStream.
50+
*/
51+
public JsonStream build() {
52+
return new JsonStream(serializeNulls, serializeEmpty, failOnUnknown);
53+
}
54+
}
55+
1556
private final boolean serializeNulls;
1657
private final boolean serializeEmpty;
1758
private final boolean failOnUnknown;
@@ -32,6 +73,21 @@ public JsonStream(boolean serializeNulls, boolean serializeEmpty, boolean failOn
3273
this.failOnUnknown = failOnUnknown;
3374
}
3475

76+
/**
77+
* Return a new builder to create a JsonStream with custom configuration.
78+
*
79+
* <pre>{@code
80+
*
81+
* var jsonStream = JsonStream.newBuilder()
82+
* .serializeNulls(true)
83+
* .build();
84+
*
85+
* }</pre>
86+
*/
87+
public static Builder newBuilder() {
88+
return new Builder();
89+
}
90+
3591
@Override
3692
public PropertyNames properties(String... names) {
3793
return JsonNames.of(names);

jsonb/src/test/java/io/avaje/jsonb/stream/DieselAdapterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
class DieselAdapterTest {
1515

16-
final JsonStream adapter = new JsonStream(true, true, false);
16+
final JsonStream adapter = JsonStream.newBuilder().serializeNulls(true).serializeEmpty(true).failOnUnknown(false).build();
1717

1818
@Test
1919
void readArray() {

jsonb/src/test/java/io/avaje/jsonb/stream/JsonReadAdapterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ private void readExampleWithAsserts(JsonReader reader) {
6767
void bigInt() {
6868
String input = "{\"name\":\"roberto\", \"val0\": 123, \"val1\": \"1234567890123456789\", \"val2\": 1234567890123456789 , \"notes\" :\"end\"}";
6969

70-
JsonStream adapter = new JsonStream(false, false, false);
70+
JsonStream adapter = JsonStream.newBuilder().failOnUnknown(true).build();
7171
try (JsonReader reader = adapter.reader(input)) {
7272
reader.beginObject();
7373
assertTrue(reader.hasNextField());

0 commit comments

Comments
 (0)