Skip to content

Commit b64feb4

Browse files
authored
add try-with-resources around json parsing in controllers (#19)
1 parent b0df20e commit b64feb4

19 files changed

+90
-30
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
plugins {
22
id 'java-library'
33
id 'maven-publish'
4-
id 'dev.poolside.gradle.semantic-version' version '0.1.5'
4+
id 'dev.poolside.gradle.semantic-version' version '1.0.0'
55
}
66

77
allprojects {
88
apply plugin: 'java-library'
99
apply plugin: 'maven-publish'
10+
apply plugin: 'dev.poolside.gradle.semantic-version'
1011

1112
repositories {
1213
mavenCentral()

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id "com.github.johnrengelman.shadow" version "8.1.1"
2+
id 'com.gradleup.shadow' version '8.3.8'
33
}
44

55
dependencies {

plugin/src/main/java/com/flit/protoc/gen/server/jakarta/RpcGenerator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,14 @@ private void addHandleMethod(MethodDescriptorProto mdp) {
7878
.nextControlFlow("else if (request.getContentType().startsWith($S))", "application/json")
7979
.addStatement("json = true")
8080
.addStatement("$T.Builder builder = $T.newBuilder()", inputType, inputType)
81-
.addStatement("$T.parser().merge(new $T(request.getInputStream(), $T.UTF_8), builder)",
82-
Types.JsonFormat,
81+
// try with resources
82+
.beginControlFlow("try ($T reader = new $T(request.getInputStream(), $T.UTF_8))",
83+
Types.InputStreamReader,
8384
Types.InputStreamReader,
8485
Types.StandardCharsets)
86+
.addStatement("$T.parser().merge(reader, builder)",
87+
Types.JsonFormat)
88+
.endControlFlow()
8589
.addStatement("data = builder.build()")
8690
.nextControlFlow("else")
8791
.addStatement("response.setStatus(415)")

plugin/src/main/java/com/flit/protoc/gen/server/jaxrs/RpcGenerator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,14 @@ private void addHandleMethod(MethodDescriptorProto mdp) {
7878
.nextControlFlow("else if (request.getContentType().startsWith($S))", "application/json")
7979
.addStatement("json = true")
8080
.addStatement("$T.Builder builder = $T.newBuilder()", inputType, inputType)
81-
.addStatement("$T.parser().merge(new $T(request.getInputStream(), $T.UTF_8), builder)",
82-
Types.JsonFormat,
81+
// try with resources
82+
.beginControlFlow("try ($T reader = new $T(request.getInputStream(), $T.UTF_8))",
83+
Types.InputStreamReader,
8384
Types.InputStreamReader,
8485
Types.StandardCharsets)
86+
.addStatement("$T.parser().merge(reader, builder)",
87+
Types.JsonFormat)
88+
.endControlFlow()
8589
.addStatement("data = builder.build()")
8690
.nextControlFlow("else")
8791
.addStatement("response.setStatus(415)")

plugin/src/main/java/com/flit/protoc/gen/server/spring/RpcGenerator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,14 @@ private void addHandleMethod(DescriptorProtos.MethodDescriptorProto m) {
6161
.nextControlFlow("else if (request.getContentType().startsWith($S))", "application/json")
6262
.addStatement("json = true")
6363
.addStatement("$T.Builder builder = $T.newBuilder()", inputType, inputType)
64-
.addStatement("$T.parser().merge(new $T(request.getInputStream(), $T.UTF_8), builder)",
65-
Types.JsonFormat,
64+
// try with resources
65+
.beginControlFlow("try ($T reader = new $T(request.getInputStream(), $T.UTF_8))",
66+
Types.InputStreamReader,
6667
Types.InputStreamReader,
6768
Types.StandardCharsets)
69+
.addStatement("$T.parser().merge(reader, builder)",
70+
Types.JsonFormat)
71+
.endControlFlow()
6872
.addStatement("data = builder.build()")
6973
.nextControlFlow("else")
7074
.addStatement("response.setStatus(415)")

plugin/src/main/java/com/flit/protoc/gen/server/undertow/RpcGenerator.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,14 @@ private void writeHandleMethod(DescriptorProtos.MethodDescriptorProto m) {
137137
.nextControlFlow("else if (contentType.startsWith($S))", "application/json")
138138
.addStatement("json = true")
139139
.addStatement("$T.Builder builder = $T.newBuilder()", inputType, inputType)
140-
.addStatement("$T.parser().merge(new $T(exchange.getInputStream(), $T.UTF_8), builder)", JsonFormat, InputStreamReader, StandardCharsets)
140+
// try with resources
141+
.beginControlFlow("try ($T reader = new $T(exchange.getInputStream(), $T.UTF_8))",
142+
InputStreamReader,
143+
InputStreamReader,
144+
StandardCharsets)
145+
.addStatement("$T.parser().merge(reader, builder)",
146+
JsonFormat)
147+
.endControlFlow()
141148
.addStatement("data = builder.build()")
142149
.nextControlFlow("else")
143150
.addStatement("exchange.setStatusCode(415)")

plugin/src/test/java/com/flit/protoc/gen/server/jakarta/HelloworldGeneratorTest.test_Generate.approved.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ public class RpcHelloWorldResource {
3737
} else if (request.getContentType().startsWith("application/json")) {
3838
json = true;
3939
Helloworld.HelloReq.Builder builder = Helloworld.HelloReq.newBuilder();
40-
JsonFormat.parser().merge(new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8), builder);
40+
try (InputStreamReader reader = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8)) {
41+
JsonFormat.parser().merge(reader, builder);
42+
}
4143
data = builder.build();
4244
} else {
4345
response.setStatus(415);
@@ -67,7 +69,9 @@ public class RpcHelloWorldResource {
6769
} else if (request.getContentType().startsWith("application/json")) {
6870
json = true;
6971
Helloworld.HelloReq.Builder builder = Helloworld.HelloReq.newBuilder();
70-
JsonFormat.parser().merge(new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8), builder);
72+
try (InputStreamReader reader = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8)) {
73+
JsonFormat.parser().merge(reader, builder);
74+
}
7175
data = builder.build();
7276
} else {
7377
response.setStatus(415);

plugin/src/test/java/com/flit/protoc/gen/server/jakarta/HelloworldGeneratorTest.test_GenerateWithRequest.approved.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ public class RpcHelloWorldResource {
3939
} else if (request.getContentType().startsWith("application/json")) {
4040
json = true;
4141
Helloworld.HelloReq.Builder builder = Helloworld.HelloReq.newBuilder();
42-
JsonFormat.parser().merge(new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8), builder);
42+
try (InputStreamReader reader = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8)) {
43+
JsonFormat.parser().merge(reader, builder);
44+
}
4345
data = builder.build();
4446
} else {
4547
response.setStatus(415);
@@ -69,7 +71,9 @@ public class RpcHelloWorldResource {
6971
} else if (request.getContentType().startsWith("application/json")) {
7072
json = true;
7173
Helloworld.HelloReq.Builder builder = Helloworld.HelloReq.newBuilder();
72-
JsonFormat.parser().merge(new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8), builder);
74+
try (InputStreamReader reader = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8)) {
75+
JsonFormat.parser().merge(reader, builder);
76+
}
7377
data = builder.build();
7478
} else {
7579
response.setStatus(415);

plugin/src/test/java/com/flit/protoc/gen/server/jakarta/StatusGeneratorTest.test_Generate.approved.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ public class RpcStatusResource {
3535
} else if (request.getContentType().startsWith("application/json")) {
3636
json = true;
3737
Core.Empty.Builder builder = Core.Empty.newBuilder();
38-
JsonFormat.parser().merge(new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8), builder);
38+
try (InputStreamReader reader = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8)) {
39+
JsonFormat.parser().merge(reader, builder);
40+
}
3941
data = builder.build();
4042
} else {
4143
response.setStatus(415);

0 commit comments

Comments
 (0)