private Statement generateInterceptorLogic() {
JaxrsResourceMethodParameters jaxrsParams =
JaxrsResourceMethodParameters.fromMethod(resourceMethod.getMethod(), "parameters");
InterceptedCall interceptedCall = resourceMethod.getMethod().getAnnotation(InterceptedCall.class);
if (interceptedCall == null) {
interceptedCall = resourceMethod.getMethod().getDeclaringClass().getAnnotation(InterceptedCall.class);
}
Statement callContext =
RPCProxyUtil.generateProxyMethodCallContext(RestCallContext.class, declaringClass,
resourceMethod.getMethod(), generateInterceptedRequest(), interceptedCall)
.publicOverridesMethod("setParameters", Parameter.of(Object[].class, "parameters"))
.append(new StringStatement("super.setParameters(parameters)"))
.append(generateUrl(jaxrsParams))
.append(generateRequestBuilder(jaxrsParams))
.append(generateHeaders(jaxrsParams))
.append(new StringStatement("setRequestBuilder(requestBuilder)"))
.finish()
.finish();
return Stmt.try_()
.append(
Stmt.declareVariable(CallContextStatus.class).asFinal().named("status").initializeWith(
Stmt.newObject(CallContextStatus.class).withParameters((Object[]) interceptedCall.value())))
.append(
Stmt.declareVariable(RestCallContext.class).asFinal().named("callContext")
.initializeWith(callContext))
.append(
Stmt.loadVariable("callContext").invoke("setRequestBuilder", Variable.get("requestBuilder")))