Example usage for org.objectweb.asm Opcodes ACC_ANNOTATION

List of usage examples for org.objectweb.asm Opcodes ACC_ANNOTATION

Introduction

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

Prototype

int ACC_ANNOTATION

To view the source code for org.objectweb.asm Opcodes ACC_ANNOTATION.

Click Source Link

Usage

From source file:org.glassfish.pfl.tf.tools.enhancer.Transformer.java

License:Open Source License

public byte[] evaluate(final byte[] arg) {
    final ClassNode cn = new ClassNode();
    final ClassReader cr = new ClassReader(arg);
    cr.accept(cn, ClassReader.SKIP_FRAMES);

    // Ignore annotations and interfaces.
    if (util.hasAccess(cn.access, Opcodes.ACC_ANNOTATION) || util.hasAccess(cn.access, Opcodes.ACC_INTERFACE)) {
        return null;
    }/*  w w  w.j  av a  2  s  .com*/

    try {
        ecd = new EnhancedClassDataASMImpl(util, annotationNames, cn);

        // If this class is not annotated as a traced class, ignore it.
        if (!ecd.isTracedClass()) {
            return null;
        }

        processTimers();

        byte[] phase1 = null;
        if ((mode == EnhanceTool.ProcessingMode.UpdateSchemas)
                || (mode == EnhanceTool.ProcessingMode.TraceEnhance)) {
            phase1 = util.transform(false, arg, new UnaryFunction<ClassVisitor, ClassAdapter>() {
                public ClassAdapter evaluate(ClassVisitor arg) {
                    return new ClassEnhancer(util, ecd, arg);
                }
            });
        }

        // Only communication from part 1 to part2 is a byte[] and
        // the EnhancedClassData.  A runtime version can be regenerated
        // as above from the byte[] from the class file as it is presented
        // to a ClassFileTransformer.
        //     Implementation note: runtime would keep byte[] stored of
        //     original version whenever tracing is enabled, so that
        //     disabling tracing simply means using a ClassFileTransformer
        //     to get back to the original code.
        //
        // Then add tracing code (part 2).
        //     This is a pure visitor using the AdviceAdapter.
        //     It must NOT modify its input visitor (or you get an
        //     infinite series of calls to onMethodExit...)

        if (mode == EnhanceTool.ProcessingMode.TraceEnhance) {
            final byte[] phase2 = util.transform(util.getDebug(), phase1,
                    new UnaryFunction<ClassVisitor, ClassAdapter>() {

                        public ClassAdapter evaluate(ClassVisitor arg) {
                            return new ClassTracer(util, ecd, arg);
                        }
                    });

            return phase2;
        } else {
            return phase1;
        }
    } catch (TraceEnhancementException exc) {
        if (util.getDebug()) {
            util.info(1, "Could not enhance file: " + exc);
        }

        return null;
    }
}

From source file:org.openspotlight.bundle.language.java.asm.TypeExtractorVisitor.java

License:Open Source License

/**
 * {@inheritDoc}/*from w  w  w  .  ja v a2 s  .c o  m*/
 */
public void visit(int version, int access, String name, String signature, String superName,
        String[] interfaces) {
    type = new TypeDefinition();

    Pair<String, String> packageAndTypeName = getPackageAndTypeNames(name);
    type.setPackageName(packageAndTypeName.getK1());
    type.setTypeName(packageAndTypeName.getK2());

    if ((access & Opcodes.ACC_INTERFACE) > 0) {
        type.setType(JavaTypes.INTERFACE);
    } else if ((access & Opcodes.ACC_ENUM) > 0) {
        type.setType(JavaTypes.ENUM);
    } else if ((access & Opcodes.ACC_ANNOTATION) > 0) {
        type.setType(JavaTypes.ANNOTATION);
    } else {
        type.setType(JavaTypes.CLASS);
    }
    type.setAccess(access);

    if ((access & Opcodes.ACC_PRIVATE) > 0) {
        type.setPrivate(true);
    }

    if (superName != null) {
        Pair<String, String> superPackageAndTypeName = getPackageAndTypeNames(superName);
        SimpleTypeReference superType = new SimpleTypeReference(superPackageAndTypeName.getK1(),
                superPackageAndTypeName.getK2());
        type.setExtendsDef(superType);
    }

    for (String interfaceName : interfaces) {
        Pair<String, String> interfacePackageAndTypeName = getPackageAndTypeNames(interfaceName);
        SimpleTypeReference interfaceType = new SimpleTypeReference(interfacePackageAndTypeName.getK1(),
                interfacePackageAndTypeName.getK2());
        type.getImplementsDef().add(interfaceType);
    }
}

From source file:org.sonar.java.resolve.FlagsTest.java

License:Open Source License

/**
 * Flags can be easily loaded from class-files into symbols.
 *///from   w w w .  j av  a 2  s .  c  o m
@Test
public void flags_match_asm_opcodes() {
    assertThat(Flags.PUBLIC).isEqualTo(Opcodes.ACC_PUBLIC);
    assertThat(Flags.PRIVATE).isEqualTo(Opcodes.ACC_PRIVATE);
    assertThat(Flags.PROTECTED).isEqualTo(Opcodes.ACC_PROTECTED);
    assertThat(Flags.STATIC).isEqualTo(Opcodes.ACC_STATIC);
    assertThat(Flags.FINAL).isEqualTo(Opcodes.ACC_FINAL);
    assertThat(Flags.SYNCHRONIZED).isEqualTo(Opcodes.ACC_SYNCHRONIZED);
    assertThat(Flags.VOLATILE).isEqualTo(Opcodes.ACC_VOLATILE);
    assertThat(Flags.TRANSIENT).isEqualTo(Opcodes.ACC_TRANSIENT);
    assertThat(Flags.NATIVE).isEqualTo(Opcodes.ACC_NATIVE);
    assertThat(Flags.INTERFACE).isEqualTo(Opcodes.ACC_INTERFACE);
    assertThat(Flags.ABSTRACT).isEqualTo(Opcodes.ACC_ABSTRACT);
    assertThat(Flags.STRICTFP).isEqualTo(Opcodes.ACC_STRICT);
    assertThat(Flags.SYNTHETIC).isEqualTo(Opcodes.ACC_SYNTHETIC);
    assertThat(Flags.ANNOTATION).isEqualTo(Opcodes.ACC_ANNOTATION);
    assertThat(Flags.ENUM).isEqualTo(Opcodes.ACC_ENUM);
}

From source file:org.springsource.loaded.test.infra.ClassPrinter.java

License:Apache License

public static String toAccessForMember(int flags) {
    StringBuilder sb = new StringBuilder();
    if ((flags & Opcodes.ACC_PUBLIC) != 0) {
        sb.append("public ");
    }//from   w  w  w.ja  v a  2  s .  com
    if ((flags & Opcodes.ACC_PRIVATE) != 0) {
        sb.append("private ");
    }
    if ((flags & Opcodes.ACC_STATIC) != 0) {
        sb.append("static ");
    }
    if ((flags & Opcodes.ACC_PROTECTED) != 0) {
        sb.append("protected ");
    }
    if ((flags & Opcodes.ACC_FINAL) != 0) {
        sb.append("final ");
    }
    if ((flags & Opcodes.ACC_SUPER) != 0) {
        sb.append("super ");
    }
    if ((flags & Opcodes.ACC_INTERFACE) != 0) {
        sb.append("interface ");
    }
    if ((flags & Opcodes.ACC_ABSTRACT) != 0) {
        sb.append("abstract ");
    }
    if ((flags & Opcodes.ACC_SYNTHETIC) != 0) {
        sb.append("synthetic ");
    }
    if ((flags & Opcodes.ACC_ANNOTATION) != 0) {
        sb.append("annotation ");
    }
    if ((flags & Opcodes.ACC_ENUM) != 0) {
        sb.append("enum ");
    }
    if ((flags & Opcodes.ACC_DEPRECATED) != 0) {
        sb.append("deprecated ");
    }
    return sb.toString().trim();
}

From source file:org.teavm.classlib.impl.report.JCLComparisonVisitor.java

License:Apache License

@Override
public void visit(int version, int access, String name, String signature, String superName,
        String[] interfaces) {//from   www.jav  a2s.co  m
    if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
        jclClass = null;
        classReader = null;
        return;
    }
    String javaName = name.replace('/', '.');
    int dotIndex = javaName.lastIndexOf('.');
    String packageName = javaName.substring(0, dotIndex);
    String simpleName = javaName.substring(dotIndex + 1);
    jclPackage = packageMap.get(packageName);
    if (jclPackage == null) {
        jclPackage = new JCLPackage(packageName);
        jclPackage.status = JCLStatus.FOUND;
        packageMap.put(packageName, jclPackage);
    }
    classReader = classSource.get(javaName);
    jclClass = new JCLClass(simpleName);
    jclClass.status = classReader != null ? JCLStatus.FOUND : JCLStatus.MISSING;
    jclClass.visibility = (access & Opcodes.ACC_PROTECTED) != 0 ? JCLVisibility.PROTECTED
            : JCLVisibility.PUBLIC;
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        jclClass.type = JCLClassType.ANNOTATION;
    } else if ((access & Opcodes.ACC_INTERFACE) != 0) {
        jclClass.type = JCLClassType.INTERFACE;
    } else if ((access & Opcodes.ACC_ENUM) != 0) {
        jclClass.type = JCLClassType.ENUM;
    } else {
        jclClass.type = JCLClassType.CLASS;
    }
    jclPackage.classes.add(jclClass);
}

From source file:org.teavm.parsing.Parser.java

License:Apache License

public static void parseModifiers(int access, ElementHolder member) {
    if ((access & Opcodes.ACC_PRIVATE) != 0) {
        member.setLevel(AccessLevel.PRIVATE);
    } else if ((access & Opcodes.ACC_PROTECTED) != 0) {
        member.setLevel(AccessLevel.PROTECTED);
    } else if ((access & Opcodes.ACC_PUBLIC) != 0) {
        member.setLevel(AccessLevel.PUBLIC);
    }/*from   w  w  w  . j a v a2s  .c om*/

    if ((access & Opcodes.ACC_ABSTRACT) != 0) {
        member.getModifiers().add(ElementModifier.ABSTRACT);
    }
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        member.getModifiers().add(ElementModifier.ANNOTATION);
    }
    if ((access & Opcodes.ACC_BRIDGE) != 0) {
        member.getModifiers().add(ElementModifier.BRIDGE);
    }
    if ((access & Opcodes.ACC_DEPRECATED) != 0) {
        member.getModifiers().add(ElementModifier.DEPRECATED);
    }
    if ((access & Opcodes.ACC_ENUM) != 0) {
        member.getModifiers().add(ElementModifier.ENUM);
    }
    if ((access & Opcodes.ACC_FINAL) != 0) {
        member.getModifiers().add(ElementModifier.FINAL);
    }
    if ((access & Opcodes.ACC_INTERFACE) != 0) {
        member.getModifiers().add(ElementModifier.INTERFACE);
    }
    if ((access & Opcodes.ACC_NATIVE) != 0) {
        member.getModifiers().add(ElementModifier.NATIVE);
    }
    if ((access & Opcodes.ACC_STATIC) != 0) {
        member.getModifiers().add(ElementModifier.STATIC);
    }
    if ((access & Opcodes.ACC_STRICT) != 0) {
        member.getModifiers().add(ElementModifier.STRICT);
    }
    if ((access & Opcodes.ACC_SUPER) != 0) {
        member.getModifiers().add(ElementModifier.SUPER);
    }
    if ((access & Opcodes.ACC_SYNCHRONIZED) != 0) {
        member.getModifiers().add(ElementModifier.SYNCHRONIZED);
    }
    if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
        member.getModifiers().add(ElementModifier.SYNTHETIC);
    }
    if ((access & Opcodes.ACC_TRANSIENT) != 0) {
        member.getModifiers().add(ElementModifier.TRANSIENT);
    }
    if ((access & Opcodes.ACC_VARARGS) != 0) {
        member.getModifiers().add(ElementModifier.VARARGS);
    }
    if ((access & Opcodes.ACC_VOLATILE) != 0) {
        member.getModifiers().add(ElementModifier.VOLATILE);
    }
}

From source file:the.bytecode.club.bytecodeviewer.decompilers.bytecode.ClassNodeDecompiler.java

License:Open Source License

public static String getAccessString(int access) {
    List<String> tokens = new ArrayList<String>();
    if ((access & Opcodes.ACC_PUBLIC) != 0)
        tokens.add("public");
    if ((access & Opcodes.ACC_PRIVATE) != 0)
        tokens.add("private");
    if ((access & Opcodes.ACC_PROTECTED) != 0)
        tokens.add("protected");
    if ((access & Opcodes.ACC_FINAL) != 0)
        tokens.add("final");
    if ((access & Opcodes.ACC_SYNTHETIC) != 0)
        tokens.add("synthetic");
    // if ((access & Opcodes.ACC_SUPER) != 0)
    // tokens.add("super"); implied by invokespecial insn
    if ((access & Opcodes.ACC_ABSTRACT) != 0)
        tokens.add("abstract");
    if ((access & Opcodes.ACC_INTERFACE) != 0)
        tokens.add("interface");
    if ((access & Opcodes.ACC_ENUM) != 0)
        tokens.add("enum");
    if ((access & Opcodes.ACC_ANNOTATION) != 0)
        tokens.add("annotation");
    if (!tokens.contains("interface") && !tokens.contains("enum") && !tokens.contains("annotation"))
        tokens.add("class");
    if (tokens.size() == 0)
        return "[Error parsing]";

    // hackery delimeters
    StringBuilder sb = new StringBuilder(tokens.get(0));
    for (int i = 1; i < tokens.size(); i++) {
        sb.append(" ");
        sb.append(tokens.get(i));/*from  w w w  .  jav a2 s.c o  m*/
    }
    return sb.toString();
}