Skip to content

Commit 69144c8

Browse files
committed
#55 - Support client generation with @client and @Client.Import
Form beans with @Header and @QueryParam properties
1 parent 01fd7b2 commit 69144c8

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

http-generator-core/src/main/java/io/avaje/http/generator/core/BeanParamReader.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,28 @@ private Set<String> writeConstructorParams(Append writer) {
105105
public void writeFormParams(Append writer) {
106106
for (FieldReader field : fieldMap.values()) {
107107
ExecutableElement getter = findGetter(field.getVarName());
108-
if (getter != null) {
109-
writer.append(" .formParam(\"%s\", %s.%s)", field.getVarName(), beanVarName, getter.toString()).eol();
110-
} else if (field.isPublic()) {
111-
writer.append(" .formParam(\"%s\", %s.%s)", field.getVarName(), beanVarName, field.getVarName()).eol();
108+
ParamType paramType = field.element.getParamType();
109+
String type = propertyParamType(paramType);
110+
if (type != null) {
111+
String accessor = (getter != null) ? getter.toString() : field.isPublic() ? field.getVarName() : null;
112+
if (accessor != null) {
113+
writer.append(" .%s(\"%s\", %s.%s)", type, field.getParamName(), beanVarName, accessor).eol();
114+
}
112115
}
113116
}
114117
}
115118

119+
private String propertyParamType(ParamType paramType) {
120+
switch (paramType) {
121+
case FORMPARAM:
122+
case QUERYPARAM:
123+
case HEADER:
124+
return paramType.toString();
125+
default:
126+
return null;
127+
}
128+
}
129+
116130
private ExecutableElement findGetter(String varName) {
117131
ExecutableElement getter = methodMap.get(varName);
118132
if (getter == null) {
@@ -141,6 +155,10 @@ boolean isPublic() {
141155
return element.getElement().getModifiers().contains(Modifier.PUBLIC);
142156
}
143157

158+
String getParamName() {
159+
return element.getParamName();
160+
}
161+
144162
String getVarName() {
145163
return element.getVarName();
146164
}

tests/test-client/src/main/java/org/example/Simple.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ class MyForm {
3636
boolean active;
3737
int notPublic;
3838

39+
@Header
40+
public String bafHead;
41+
42+
@QueryParam("my-parm")
43+
String mparam;
44+
45+
public String getMparam() {
46+
return mparam;
47+
}
48+
3949
public String getName() {
4050
return name;
4151
}

0 commit comments

Comments
 (0)