11package io .dinject .javalin .generator ;
22
3+ import io .dinject .controller .Cookie ;
4+ import io .dinject .controller .Default ;
5+ import io .dinject .controller .FormParam ;
6+ import io .dinject .controller .Header ;
37import io .dinject .controller .QueryParam ;
48
59import javax .lang .model .element .VariableElement ;
@@ -10,27 +14,50 @@ class MethodParam {
1014 private final String rawType ;
1115 private final TypeHandler typeHandler ;
1216 private final String varName ;
13- private final String paramName ;
1417 private final String snakeName ;
15-
16- private final String paramDefault ;
1718 private final String docComment ;
19+ private String paramName ;
20+ private String paramDefault ;
21+ private String paramType ;
1822
1923 MethodParam (VariableElement param , ProcessingContext ctx ) {
2024 this .rawType = param .asType ().toString ();
2125 this .typeHandler = TypeMap .get (rawType );
2226 this .varName = param .getSimpleName ().toString ();
27+ this .snakeName = Util .snakeCase (varName );
28+ this .paramName = varName ;
2329 this .docComment = ctx .docComment (param );
2430
31+ Default defaultVal = param .getAnnotation (Default .class );
32+ if (defaultVal != null ) {
33+ this .paramDefault = defaultVal .value ();
34+ }
35+
2536 QueryParam queryParam = param .getAnnotation (QueryParam .class );
2637 if (queryParam != null ) {
27- this .paramName = nameFrom (queryParam .name (), param .getSimpleName ().toString ());
28- this .paramDefault = queryParam .defaultValue ();
29- } else {
30- this .paramName = varName ;
31- this .paramDefault = "" ;
38+ this .paramName = nameFrom (queryParam .value (), varName );
39+ this .paramType = "queryParam" ;
40+ }
41+ FormParam formParam = param .getAnnotation (FormParam .class );
42+ if (formParam != null ) {
43+ this .paramName = nameFrom (formParam .value (), varName );
44+ this .paramType = "formParam" ;
45+ }
46+ Cookie cookieParam = param .getAnnotation (Cookie .class );
47+ if (cookieParam != null ) {
48+ this .paramName = nameFrom (cookieParam .value (), varName );
49+ this .paramType = "cookie" ;
50+ this .paramDefault = null ;
51+ }
52+ Header headerParam = param .getAnnotation (Header .class );
53+ if (headerParam != null ) {
54+ this .paramName = nameFrom (headerParam .value (), Util .initcapSnake (snakeName ));
55+ this .paramType = "header" ;
56+ this .paramDefault = null ;
57+ }
58+ if (paramType == null ) {
59+ this .paramType = "queryParam" ;
3260 }
33- this .snakeName = Util .snakeCase (varName );
3461 }
3562
3663 private String nameFrom (String name , String defaultName ) {
@@ -80,9 +107,9 @@ void buildCtxGet(Append writer, Set<String> pathParams) {
80107 writer .append ("ctx.bodyAsClass(%s.class)" , shortType );
81108 } else {
82109 if (hasParamDefault ()) {
83- writer .append ("ctx.queryParam (\" %s\" ,\" %s\" )" , paramName , paramDefault );
110+ writer .append ("ctx.%s (\" %s\" ,\" %s\" )" , paramType , paramName , paramDefault );
84111 } else {
85- writer .append ("ctx.queryParam (\" %s\" )" , paramName );
112+ writer .append ("ctx.%s (\" %s\" )" , paramType , paramName );
86113 }
87114 }
88115 }
0 commit comments