Skip to content

Commit 835b592

Browse files
committed
#8 - Have @Form on method imply a bean is a "form bean" (not require @Form on method param)
1 parent c9c5a08 commit 835b592

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

src/main/java/io/dinject/javalin/generator/BeanParamReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ static class FieldReader {
8484
private String setterMethod;
8585

8686
FieldReader(ProcessingContext ctx, Element enclosedElement, ParamType defaultParamType) {
87-
this.element = new ElementReader(enclosedElement, ctx, defaultParamType);
87+
this.element = new ElementReader(enclosedElement, ctx, defaultParamType, false);
8888
}
8989

9090
String getVarName() {

src/main/java/io/dinject/javalin/generator/ElementReader.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,19 @@ class ElementReader {
1818
private final TypeHandler typeHandler;
1919
private final String varName;
2020
private final String snakeName;
21+
private final boolean formMarker;
2122

2223
private String paramName;
2324
private ParamType paramType;
2425
private boolean impliedParamType;
2526
private String paramDefault;
2627
private String docComment;
2728

28-
ElementReader(Element element, ProcessingContext ctx, ParamType defaultType) {
29+
ElementReader(Element element, ProcessingContext ctx, ParamType defaultType, boolean formMarker) {
2930
this.ctx = ctx;
3031
this.rawType = element.asType().toString();
3132
this.typeHandler = TypeMap.get(rawType);
33+
this.formMarker = formMarker;
3234

3335
this.varName = element.getSimpleName().toString();
3436
this.snakeName = Util.snakeCase(varName);
@@ -157,6 +159,12 @@ void setValue(Append writer) {
157159

158160
private boolean setValue(Append writer, PathSegments segments, String shortType) {
159161

162+
if (formMarker && impliedParamType && typeHandler == null) {
163+
// @Form on method and this type is a "bean" so treat is as a form bean
164+
writeForm(writer, shortType, varName, ParamType.FORMPARAM);
165+
return false;
166+
}
167+
160168
if (ParamType.FORM == paramType) {
161169
writeForm(writer, shortType, varName, ParamType.FORMPARAM);
162170
return false;

src/main/java/io/dinject/javalin/generator/MethodParam.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ class MethodParam {
66

77
private final ElementReader elementParam;
88

9-
MethodParam(VariableElement param, ProcessingContext ctx, ParamType defaultParamType) {
10-
this.elementParam = new ElementReader(param, ctx, defaultParamType);
9+
MethodParam(VariableElement param, ProcessingContext ctx, ParamType defaultParamType, boolean formMarker) {
10+
this.elementParam = new ElementReader(param, ctx, defaultParamType, formMarker);
1111
}
1212

1313
void buildCtxGet(Append writer, PathSegments segments) {

src/main/java/io/dinject/javalin/generator/MethodReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void read() {
5858
ParamType defaultParamType = (formMarker) ? ParamType.FORMPARAM : ParamType.QUERYPARAM;
5959

6060
for (VariableElement p : element.getParameters()) {
61-
MethodParam param = new MethodParam(p, ctx, defaultParamType);
61+
MethodParam param = new MethodParam(p, ctx, defaultParamType, formMarker);
6262
params.add(param);
6363
param.addImports(bean);
6464
}

0 commit comments

Comments
 (0)