33import io .avaje .http .api .MediaType ;
44import io .avaje .http .generator .core .*;
55
6+ import java .util .List ;
67import java .util .Optional ;
78
89/**
@@ -25,11 +26,8 @@ class ControllerMethodWriter {
2526 }
2627
2728 void writeRule () {
28- final var fullPath = method .getFullPath ();
29- writer
30- .append (
31- " rules.%s(\" %s\" , this::_%s);" ,
32- webMethod .name ().toLowerCase (), fullPath , method .simpleName ())
29+ writer .append (" rules.%s(\" %s\" , this::_%s);" ,
30+ webMethod .name ().toLowerCase (), method .getFullPath (), method .simpleName ())
3331 .eol ();
3432 }
3533
@@ -60,7 +58,7 @@ void writeHandler(boolean requestScoped) {
6058 writer .append (");" ).eol ();
6159 });
6260 }
63- } else if (method . getParams (). stream (). anyMatch ( p -> p . isForm () || ParamType . FORMPARAM . equals ( p . getParamType ()) )) {
61+ } else if (usesFormParams ( )) {
6462 writer .append (" var formParams = req.content().as(Parameters.class);" ).eol ();
6563 }
6664
@@ -80,7 +78,7 @@ void writeHandler(boolean requestScoped) {
8078 writer .append (" " );
8179 if (!method .isVoid ()) {
8280 writer .append ("var result = " );
83- } else if (method . isVoid () && params . stream (). noneMatch ( p -> "ServerResponse" . equals ( p . getShortType ()) )) {
81+ } else if (missingServerResponse ( params )) {
8482 throw new IllegalStateException ("Void controller methods must have a ServerResponse parameter" );
8583 }
8684
@@ -104,23 +102,29 @@ void writeHandler(boolean requestScoped) {
104102 writer .append (");" ).eol ();
105103 if (!method .isVoid ()) {
106104 writeContextReturn ();
107- if (useJsonB
108- && !"byte[]" .equals (method .getReturnType ().toString ())
109- && (method .getProduces () == null
110- || method .getProduces ().toLowerCase ().contains ("json" ))) {
111-
112- writer
113- .append (
114- " %sReturnedJsonType.toJson(result, res.outputStream());" , method .simpleName ())
115- .eol ();
116-
105+ if (producesJson ()) {
106+ writer .append (" %sReturnedJsonType.toJson(result, res.outputStream());" , method .simpleName ()).eol ();
117107 } else {
118108 writer .append (" res.send(result);" ).eol ();
119109 }
120110 }
121111 writer .append (" }" ).eol ().eol ();
122112 }
123113
114+ private boolean producesJson () {
115+ return useJsonB
116+ && !"byte[]" .equals (method .getReturnType ().toString ())
117+ && (method .getProduces () == null || method .getProduces ().toLowerCase ().contains ("json" ));
118+ }
119+
120+ private boolean missingServerResponse (List <MethodParam > params ) {
121+ return method .isVoid () && params .stream ().noneMatch (p -> "ServerResponse" .equals (p .getShortType ()));
122+ }
123+
124+ private boolean usesFormParams () {
125+ return method .getParams ().stream ().anyMatch (p -> p .isForm () || ParamType .FORMPARAM .equals (p .getParamType ()));
126+ }
127+
124128 private void writeContextReturn () {
125129 final var producesOp = Optional .ofNullable (method .getProduces ());
126130 if (producesOp .isEmpty () && !useJsonB ) {
0 commit comments