List of usage examples for org.objectweb.asm Opcodes ACC_ANNOTATION
int ACC_ANNOTATION
To view the source code for org.objectweb.asm Opcodes ACC_ANNOTATION.
Click Source Link
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(); }