Skip to content

Commit c00b43c

Browse files
committed
No effective change, extract methods in Nima ControllerMethodWriter
1 parent 24ed110 commit c00b43c

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

http-generator-nima/src/main/java/io/avaje/http/generator/helidon/nima/ControllerMethodWriter.java

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import io.avaje.http.generator.core.WebMethod;
1616
import io.avaje.http.generator.core.openapi.MediaType;
1717

18+
import javax.lang.model.type.TypeMirror;
19+
1820
/**
1921
* Write code to register Web route for a given controller method.
2022
*/
@@ -44,36 +46,13 @@ void writeHandler(boolean requestScoped) {
4446
writer.append(" private void _%s(ServerRequest req, ServerResponse res) throws Exception {", method.simpleName()).eol();
4547
final var bodyType = method.bodyType();
4648
if (bodyType != null) {
47-
4849
if ("InputStream".equals(bodyType)) {
4950
writer.append(" var %s = req.content().inputStream();", method.bodyName()).eol();
5051
} else if (useJsonB) {
51-
final var fieldName =
52-
method.params().stream()
53-
.filter(MethodParam::isBody)
54-
.findFirst()
55-
.orElseThrow()
56-
.utype()
57-
.shortName();
52+
final String fieldName = fieldNameOfBody();
5853
writer.append(" var %s = %sJsonType.fromJson(req.content().inputStream());", method.bodyName(), fieldName).eol();
59-
6054
} else {
61-
// use default helidon content negotiation
62-
method.params().stream()
63-
.filter(MethodParam::isBody)
64-
.forEach(
65-
param -> {
66-
final var type = param.utype();
67-
68-
writer.append(" var %s = req.content()", method.bodyName());
69-
writer.append(".as(");
70-
if (type.param0() != null) {
71-
writer.append("new io.helidon.common.GenericType<%s>() {}", type.full());
72-
} else {
73-
writer.append("%s.class", type.full());
74-
}
75-
writer.append(");").eol();
76-
});
55+
defaultHelidonBodyContent();
7756
}
7857
} else if (usesFormParams()) {
7958
writer.append(" var formParams = req.content().as(Parameters.class);").eol();
@@ -130,8 +109,7 @@ void writeHandler(boolean requestScoped) {
130109

131110
if (!method.isVoid()) {
132111
writeContextReturn();
133-
134-
if (isAssignable2Interface(method.returnType().toString(), "java.io.InputStream")) {
112+
if (isInputStream(method.returnType())) {
135113
final var uType = UType.parse(method.returnType());
136114
writer.append(" result.transferTo(res.outputStream());", uType.shortName()).eol();
137115
} else if (producesJson()) {
@@ -144,6 +122,36 @@ void writeHandler(boolean requestScoped) {
144122
writer.append(" }").eol().eol();
145123
}
146124

125+
private boolean isInputStream(TypeMirror type) {
126+
return isAssignable2Interface(type.toString(), "java.io.InputStream");
127+
}
128+
129+
private void defaultHelidonBodyContent() {
130+
method.params().stream()
131+
.filter(MethodParam::isBody)
132+
.forEach(
133+
param -> {
134+
final var type = param.utype();
135+
writer.append(" var %s = req.content()", method.bodyName());
136+
writer.append(".as(");
137+
if (type.param0() != null) {
138+
writer.append("new io.helidon.common.GenericType<%s>() {}", type.full());
139+
} else {
140+
writer.append("%s.class", type.full());
141+
}
142+
writer.append(");").eol();
143+
});
144+
}
145+
146+
private String fieldNameOfBody() {
147+
return method.params().stream()
148+
.filter(MethodParam::isBody)
149+
.findFirst()
150+
.orElseThrow()
151+
.utype()
152+
.shortName();
153+
}
154+
147155
private boolean producesJson() {
148156
return useJsonB
149157
&& !disabledDirectWrites()
@@ -171,9 +179,7 @@ private void writeContextReturn() {
171179
case APPLICATION_JSON -> writer.append(contentTypeString + "APPLICATION_JSON);").eol();
172180
case TEXT_HTML -> writer.append(contentTypeString + "TEXT_HTML);").eol();
173181
case TEXT_PLAIN -> writer.append(contentTypeString + "TEXT_PLAIN);").eol();
174-
case UNKNOWN -> writer
175-
.append(contentTypeString + "create(\"%s\"));", producesOp.orElse("UNKNOWN"))
176-
.eol();
182+
case UNKNOWN -> writer.append(contentTypeString + "create(\"%s\"));", producesOp.orElse("UNKNOWN")).eol();
177183
}
178184
}
179185

0 commit comments

Comments
 (0)