Skip to content

Commit 1bed539

Browse files
committed
Fix bad request entity in rest methods
1 parent 516cb96 commit 1bed539

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/rest/RestMethodHandler.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ protected JExpression getHttpMethod() {
135135

136136
protected JExpression getRequestEntity(ExecutableElement element, RestHolder holder, JBlock methodBody, TreeMap<String, JVar> params) {
137137
JVar httpHeaders = restAnnotationHelper.declareHttpHeaders(element, holder, methodBody);
138-
return restAnnotationHelper.declareHttpEntity(processHolder, methodBody, params, httpHeaders);
138+
JVar entitySentToServer = restAnnotationHelper.getEntitySentToServer(element, params);
139+
return restAnnotationHelper.declareHttpEntity(processHolder, methodBody, entitySentToServer, httpHeaders);
139140
}
140141

141142
protected JExpression getResponseClass(Element element, RestHolder holder) {

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/RestAnnotationHelper.java‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,20 @@ public JVar declareHttpHeaders(ExecutableElement executableElement, RestHolder h
267267
return httpHeadersVar;
268268
}
269269

270-
public JExpression declareHttpEntity(ProcessHolder holder, JBlock body, TreeMap<String, JVar> methodParams, JVar httpHeaders) {
271-
JVar entitySentToServer = null;
270+
public JVar getEntitySentToServer(ExecutableElement element, TreeMap<String, JVar> params) {
271+
Set<String> urlVariables = extractUrlVariableNames(element);
272+
for (String paramName : params.keySet()) {
273+
if (!urlVariables.contains(paramName)) {
274+
return params.get(paramName);
275+
}
276+
}
277+
return null;
278+
}
279+
280+
public JExpression declareHttpEntity(ProcessHolder holder, JBlock body, JVar entitySentToServer, JVar httpHeaders) {
272281
JType entityType = holder.refClass(Object.class);
273282

274-
if (!methodParams.isEmpty()) {
275-
entitySentToServer = methodParams.firstEntry().getValue();
283+
if (entitySentToServer != null) {
276284
entityType = entitySentToServer.type();
277285
if (entityType.isPrimitive()) {
278286
// Don't narrow primitive types...

0 commit comments

Comments
 (0)