in fractions/cdi-extensions/cdi-jaxrsapi/src/main/java/org/wildfly/swarm/cdi/jaxrsapi/runtime/ClientServiceFactory.java [82:141]
static void createMethod(ClassWriter cw, String implName, String clientInterfaceName, MethodInfo method, int lineNum, String baseUrl) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PUBLIC, method.name(), buildMethodDef(method), null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(lineNum++, l0);
mv.visitLdcInsn(Type.getType(buildTypeDef(clientInterfaceName)));
mv.visitTypeInsn(NEW, "org/jboss/resteasy/client/jaxrs/ResteasyClientBuilder");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESPECIAL, "org/jboss/resteasy/client/jaxrs/ResteasyClientBuilder", "<init>", "()V", false);
mv.visitMethodInsn(INVOKEVIRTUAL, "org/jboss/resteasy/client/jaxrs/ResteasyClientBuilder", "build", "()Lorg/jboss/resteasy/client/jaxrs/ResteasyClient;", false);
mv.visitLdcInsn(baseUrl);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLineNumber(lineNum++, l1);
mv.visitMethodInsn(INVOKEVIRTUAL, "org/jboss/resteasy/client/jaxrs/ResteasyClient", "target", "(Ljava/lang/String;)Lorg/jboss/resteasy/client/jaxrs/ResteasyWebTarget;", false);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLineNumber(lineNum - 2, l2);
mv.visitMethodInsn(INVOKESTATIC, "org/wildfly/swarm/cdi/jaxrsapi/deployment/ProxyBuilder", "builder", "(Ljava/lang/Class;Ljavax/ws/rs/client/WebTarget;)Lorg/wildfly/swarm/cdi/jaxrsapi/deployment/ProxyBuilder;", false);
Label l3 = new Label();
mv.visitLabel(l3);
mv.visitLineNumber(lineNum++, l3);
mv.visitMethodInsn(INVOKEVIRTUAL, "org/wildfly/swarm/cdi/jaxrsapi/deployment/ProxyBuilder", "build", "()Ljava/lang/Object;", false);
mv.visitTypeInsn(CHECKCAST, clientInterfaceName.replace('.', '/'));
for (int i = 1; i <= method.parameters().size(); i++) {
mv.visitVarInsn(ALOAD, i);
}
Label l4 = new Label();
mv.visitLabel(l4);
mv.visitLineNumber(lineNum++, l4);
mv.visitMethodInsn(INVOKEINTERFACE, clientInterfaceName.replace('.', '/'), method.name(), buildMethodDef(method), true);
Label l5 = new Label();
mv.visitLabel(l5);
if (method.returnType().kind().equals(org.jboss.jandex.Type.Kind.VOID)) {
mv.visitLineNumber(lineNum++, l5);
mv.visitInsn(RETURN);
} else {
mv.visitLineNumber(lineNum - 4, l5);
mv.visitInsn(ARETURN);
}
Label l6 = new Label();
mv.visitLabel(l6);
int methodParams = 0;
mv.visitLocalVariable("this", buildTypeDef(implName), null, l0, l6, methodParams++);
for (AnnotationInstance anno : method.annotations()) {
if (anno.name().toString().contains("QueryParam") || anno.name().toString().contains("PathParam")) {
short position = anno.target().asMethodParameter().position();
org.jboss.jandex.Type parameterType = anno.target().asMethodParameter().method().parameters().get(position);
mv.visitLocalVariable(String.valueOf(anno.value().value()), buildTypeDef(parameterType.name().toString()), null, l0, l6, methodParams++);
}
}
mv.visitMaxs(3, methodParams);
lineNum += 4;
mv.visitEnd();
}
}