Example usage for org.objectweb.asm MethodVisitor MethodVisitor

List of usage examples for org.objectweb.asm MethodVisitor MethodVisitor

Introduction

In this page you can find the example usage for org.objectweb.asm MethodVisitor MethodVisitor.

Prototype

public MethodVisitor(final int api) 

Source Link

Document

Constructs a new MethodVisitor .

Usage

From source file:org.wildfly.swarm.fractions.ArquillianClientAnnotationSeekingClassVisitor.java

License:Apache License

@Override
public MethodVisitor visitMethod(final int __, final String ___, final String desc, final String signature,
        final String[] exceptions) {

    return new MethodVisitor(Opcodes.ASM5) {
        @Override// w ww .  j  a va2s .com
        public AnnotationVisitor visitAnnotation(final String desc, final boolean __) {

            Type type = Type.getType(desc);
            String className = type.getInternalName();

            if (className.equals(DEPLOYMENT_ANNOTATION)) {
                containerCounter++;
                return new ArquillianAnnotationVisitor();
            }

            if (className.equals(RUN_AS_CLIENT_ANNOTATION)) {
                clientCounter++;
            }

            return null;
        }
    };
}

From source file:rubah.bytecode.transformers.FailFastMethodTransformer.java

License:Open Source License

@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {

    if (Modifier.isAbstract(access)) {
        // Do not install fail fast code on abstract methods
        return super.visitMethod(access, name, desc, signature, exceptions);
    }//from  w w w  .  j a v a2  s . c  om

    MethodVisitor mv = this.cv.visitMethod(access, name, desc, signature, exceptions);

    mv.visitCode();
    mv.visitTypeInsn(NEW, "java/lang/Error");
    mv.visitInsn(DUP);
    mv.visitLdcInsn("Fail fast");
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Error", "<init>", "(Ljava/lang/String;)V", false);
    mv.visitInsn(ATHROW);
    mv.visitMaxs(3, 1);
    mv.visitEnd();

    return new MethodVisitor(ASM5) {
    };
}

From source file:se.eris.functional.nested.NestedAnnotatedInstrumenterTest.java

License:Apache License

@NotNull
private List<String> getStringConstants(final ClassReader cr, final String methodName) {
    final List<String> strings = new ArrayList<>();
    cr.accept(new ClassVisitor(AsmUtils.ASM_OPCODES_VERSION) {
        @Override//ww  w  . j ava2s .  co m
        public MethodVisitor visitMethod(final int access, final String name, final String desc,
                final String signature, final String[] exceptions) {
            if (name.equals(methodName)) {
                return new MethodVisitor(AsmUtils.ASM_OPCODES_VERSION) {
                    @Override
                    public void visitLdcInsn(final Object cst) {
                        if (cst instanceof String) {
                            strings.add(desc + ":" + cst);
                        }
                    }
                };
            }
            return super.visitMethod(access, name, desc, signature, exceptions);
        }
    }, 0);
    return strings;
}

From source file:sonia.legman.maven.MethodAnnotationClassVisitor.java

License:Apache License

/**
 * Method description/*w w  w.  java  2 s  .  c o  m*/
 *
 *
 * @param access
 * @param methodName
 * @param desc
 * @param signature
 * @param exceptions
 *
 * @return
 */
@Override
public MethodVisitor visitMethod(int access, final String methodName, String desc, String signature,
        String[] exceptions) {
    return new MethodVisitor(api) {

        @Override
        public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
            String annotation = transformDescToClassName(desc);

            if (annotations.contains(annotation)) {
                methodAnnotationHandler.handleMethodAnnotation(className, methodName, annotation);
            }

            return super.visitAnnotation(desc, visible);
        }

    };
}