public JaxrsProxyMethodGenerator(JaxrsResourceMethod resourceMethod) {
this.resourceMethod = resourceMethod;
}
public void generate(ClassStructureBuilder<?> classBuilder) {
MetaMethod method = resourceMethod.getMethod();
this.errorHandling = Stmt.loadStatic(classBuilder.getClassDefinition(), "this")
.invoke("handleError", Variable.get("throwable"));
this.responseHandling = Stmt.loadStatic(classBuilder.getClassDefinition(), "this")
.loadField("remoteCallback").invoke("callback",
demarshal(method.getReturnType(), Stmt.loadVariable("response").invoke("getText")));
BlockBuilder<?> methodBlock =
classBuilder.publicMethod(method.getReturnType(), method.getName(),
DefParameters.from(method).getParameters().toArray(new Parameter[0]));
if (resourceMethod.getHttpMethod() != null) {
generateUrl(methodBlock);
generateRequestBuilder(methodBlock);
generateHeaders(methodBlock);
generateRequest(methodBlock);
}
Statement returnStatement;
if (!method.getReturnType().equals(MetaClassFactory.get(void.class))) {
if (MetaClassFactory.get(Number.class).isAssignableFrom(method.getReturnType().asBoxed())) {
returnStatement = Stmt.load(0).returnValue();
}
else if (MetaClassFactory.get(Boolean.class).isAssignableFrom(method.getReturnType().asBoxed())) {
returnStatement = Stmt.load(true).returnValue();
}
else {
returnStatement = Stmt.load(null).returnValue();
}