Skip to content

Commit 16badee

Browse files
marschallVerdent
authored andcommitted
Close Parsers and Generators
Close parsers and generators to return buffers to the pool.
1 parent f3cbb35 commit 16badee

File tree

1 file changed

+46
-26
lines changed

1 file changed

+46
-26
lines changed

src/main/java/org/eclipse/yasson/internal/JsonBinding.java

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -57,54 +57,64 @@ private <T> T deserialize(final Type type, final JsonParser parser, final Deseri
5757

5858
@Override
5959
public <T> T fromJson(String str, Class<T> type) throws JsonbException {
60-
final JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str));
61-
final DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
62-
return deserialize(type, parser, unmarshaller);
60+
try (JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str))) {
61+
final DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
62+
return deserialize(type, parser, unmarshaller);
63+
}
6364
}
6465

6566
@Override
6667
public <T> T fromJson(String str, Type type) throws JsonbException {
67-
JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str));
68-
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
69-
return deserialize(type, parser, unmarshaller);
68+
try (JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str))) {
69+
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
70+
return deserialize(type, parser, unmarshaller);
71+
}
7072
}
7173

7274
@Override
7375
public <T> T fromJson(Reader reader, Class<T> type) throws JsonbException {
74-
JsonParser parser = jsonbContext.getJsonProvider().createParser(reader);
75-
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
76-
return deserialize(type, parser, unmarshaller);
76+
try (JsonParser parser = jsonbContext.getJsonProvider().createParser(reader)) {
77+
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
78+
return deserialize(type, parser, unmarshaller);
79+
}
7780
}
7881

7982
@Override
8083
public <T> T fromJson(Reader reader, Type type) throws JsonbException {
81-
JsonParser parser = jsonbContext.getJsonProvider().createParser(reader);
82-
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
83-
return deserialize(type, parser, unmarshaller);
84+
try (JsonParser parser = jsonbContext.getJsonProvider().createParser(reader)) {
85+
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
86+
return deserialize(type, parser, unmarshaller);
87+
}
8488
}
8589

8690
@Override
8791
public <T> T fromJson(InputStream stream, Class<T> clazz) throws JsonbException {
8892
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
89-
return deserialize(clazz, inputStreamParser(stream), unmarshaller);
93+
try (JsonParser parser = inputStreamParser(stream)) {
94+
return deserialize(clazz, inputStreamParser(stream), unmarshaller);
95+
}
9096
}
9197

9298
@Override
9399
public <T> T fromJson(InputStream stream, Type type) throws JsonbException {
94100
DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
95-
return deserialize(type, inputStreamParser(stream), unmarshaller);
101+
try (JsonParser parser = inputStreamParser(stream)) {
102+
return deserialize(type, inputStreamParser(stream), unmarshaller);
103+
}
96104
}
97105

98106
@Override
99107
public <T> T fromJsonStructure(JsonStructure jsonStructure, Class<T> type) throws JsonbException {
100-
JsonParser parser = new JsonStructureToParserAdapter(jsonStructure);
101-
return deserialize(type, parser, new DeserializationContextImpl(jsonbContext));
108+
try (JsonParser parser = new JsonStructureToParserAdapter(jsonStructure)) {
109+
return deserialize(type, parser, new DeserializationContextImpl(jsonbContext));
110+
}
102111
}
103112

104113
@Override
105114
public <T> T fromJsonStructure(JsonStructure jsonStructure, Type runtimeType) throws JsonbException {
106-
JsonParser parser = new JsonStructureToParserAdapter(jsonStructure);
107-
return deserialize(runtimeType, parser, new DeserializationContextImpl(jsonbContext));
115+
try (JsonParser parser = new JsonStructureToParserAdapter(jsonStructure)) {
116+
return deserialize(runtimeType, parser, new DeserializationContextImpl(jsonbContext));
117+
}
108118
}
109119

110120
private JsonParser inputStreamParser(InputStream stream) {
@@ -117,29 +127,35 @@ private JsonParser inputStreamParser(InputStream stream) {
117127
@Override
118128
public String toJson(Object object) throws JsonbException {
119129
StringWriter writer = new StringWriter();
120-
final JsonGenerator generator = writerGenerator(writer);
121-
new SerializationContextImpl(jsonbContext).marshall(object, generator);
130+
try (JsonGenerator generator = writerGenerator(writer)) {
131+
new SerializationContextImpl(jsonbContext).marshall(object, generator);
132+
}
122133
return writer.toString();
123134
}
124135

125136
@Override
126137
public String toJson(Object object, Type type) throws JsonbException {
127138
StringWriter writer = new StringWriter();
128-
final JsonGenerator generator = writerGenerator(writer);
129-
new SerializationContextImpl(jsonbContext, type).marshall(object, generator);
139+
try (JsonGenerator generator = writerGenerator(writer)) {
140+
new SerializationContextImpl(jsonbContext, type).marshall(object, generator);
141+
}
130142
return writer.toString();
131143
}
132144

133145
@Override
134146
public void toJson(Object object, Writer writer) throws JsonbException {
135147
final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
136-
marshaller.marshallWithoutClose(object, writerGenerator(writer));
148+
try (JsonGenerator generator = writerGenerator(writer)) {
149+
marshaller.marshallWithoutClose(object, generator);
150+
}
137151
}
138152

139153
@Override
140154
public void toJson(Object object, Type type, Writer writer) throws JsonbException {
141155
final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, type);
142-
marshaller.marshallWithoutClose(object, writerGenerator(writer));
156+
try (JsonGenerator generator = writerGenerator(writer)) {
157+
marshaller.marshallWithoutClose(object, generator);
158+
}
143159
}
144160

145161
private JsonGenerator writerGenerator(Writer writer) {
@@ -153,13 +169,17 @@ private JsonGenerator writerGenerator(Writer writer) {
153169
@Override
154170
public void toJson(Object object, OutputStream stream) throws JsonbException {
155171
final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
156-
marshaller.marshall(object, streamGenerator(stream));
172+
try (JsonGenerator generator = streamGenerator(stream)) {
173+
marshaller.marshall(object, generator);
174+
}
157175
}
158176

159177
@Override
160178
public void toJson(Object object, Type type, OutputStream stream) throws JsonbException {
161179
final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, type);
162-
marshaller.marshall(object, streamGenerator(stream));
180+
try (JsonGenerator generator = streamGenerator(stream)) {
181+
marshaller.marshall(object, generator);
182+
}
163183
}
164184

165185
@Override

0 commit comments

Comments
 (0)