List of usage examples for org.objectweb.asm ClassVisitor ClassVisitor
public ClassVisitor(final int api)
From source file:com.github.rkaippully.jasm.test.ClassAnnotationsTest.java
License:Apache License
@Test public void testAnnotations() { reader.accept(new ClassVisitor(ASM4) { private boolean visibleVisited; private boolean invisibleVisited; class VisibleAnnotationVisitor extends AnnotationVisitor { public VisibleAnnotationVisitor(String desc) { super(ASM4); assertEquals("javax/annotation/Generated", desc); }//from w ww . jav a2 s . c om @Override public void visit(String name, Object value) { assertEquals("date", name); assertEquals("2001-07-04T12:08:56.235-0700", value); } @Override public void visitEnum(String name, String desc, String value) { fail("visitEnum called with name=" + name + ", value=" + value + ", desc = " + desc); } @Override public AnnotationVisitor visitAnnotation(String name, String desc) { fail("visitAnnotation called with name=" + name + ", desc = " + desc); return null; } @Override public AnnotationVisitor visitArray(String name) { assertEquals("value", name); return new AnnotationVisitor(ASM4) { private List<Object> arrayEntries = new ArrayList<>(2); @Override public void visit(String name, Object value) { arrayEntries.add(value); } @Override public void visitEnd() { assertEquals(2, arrayEntries.size()); assertEquals("codegen1", arrayEntries.get(0)); assertEquals("codegen2", arrayEntries.get(1)); } }; } @Override public void visitEnd() { visibleVisited = true; } } class InvisibleAnnotationVisitor extends AnnotationVisitor { public InvisibleAnnotationVisitor(String desc) { super(ASM4); assertEquals("java/lang/Deprecated", desc); } @Override public void visit(String name, Object value) { fail("visit called with name=" + name + ", value=" + value); } @Override public void visitEnum(String name, String desc, String value) { fail("visitEnum called with name=" + name + ", value=" + value + ", desc = " + desc); } @Override public AnnotationVisitor visitAnnotation(String name, String desc) { fail("visitAnnotation called with name=" + name + ", desc = " + desc); return null; } @Override public AnnotationVisitor visitArray(String name) { fail("visitArray called with name=" + name); return null; } @Override public void visitEnd() { invisibleVisited = true; } } @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { if (visible) return new VisibleAnnotationVisitor(desc); else return new InvisibleAnnotationVisitor(desc); } @Override public void visitEnd() { assertTrue(visibleVisited); assertTrue(invisibleVisited); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testSourceFileAndDebug() { reader.accept(new ClassVisitor(ASM4) { private String source; private String debug; @Override/*w w w.j a v a 2 s . c o m*/ public void visitSource(String source, String debug) { this.source = source; this.debug = debug; } @Override public void visitEnd() { // We need this outside visitSource() because visitSource() may // not get called if source and debug are null assertEquals("ClassAttributesTest.jasm", source); assertEquals("SMAP\n*E\n", debug); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testInnerClass() { class InnerClassInfo implements Comparable<InnerClassInfo> { public String name; public String outerName; public String innerName; public int access; @Override/*from w ww .j a v a 2 s . c o m*/ public int compareTo(InnerClassInfo that) { return this.name.compareTo(that.name); } } reader.accept(new ClassVisitor(ASM4) { private Set<InnerClassInfo> innerClasses = new TreeSet<>(); @Override public void visitInnerClass(String name, String outerName, String innerName, int access) { InnerClassInfo innerClass = new InnerClassInfo(); innerClass.name = name; innerClass.outerName = outerName; innerClass.innerName = innerName; innerClass.access = access; innerClasses.add(innerClass); } @Override public void visitEnd() { assertEquals(3, innerClasses.size()); Iterator<InnerClassInfo> itr = innerClasses.iterator(); InnerClassInfo innerClass = itr.next(); assertEquals("com/github/rkaippully/jasm/test/gen/ClassAttributesTest$InnerClass1", innerClass.name); assertEquals("com/github/rkaippully/jasm/test/gen/ClassAttributesTest", innerClass.outerName); assertEquals("InnerClass1", innerClass.innerName); assertEquals(ACC_PROTECTED | ACC_STATIC, innerClass.access); innerClass = itr.next(); assertEquals("com/github/rkaippully/jasm/test/gen/ClassAttributesTest$InnerClass2", innerClass.name); assertNull(innerClass.outerName); assertEquals("InnerClass2", innerClass.innerName); assertEquals(ACC_FINAL, innerClass.access); innerClass = itr.next(); assertEquals("com/github/rkaippully/jasm/test/gen/ClassAttributesTest$InnerClass3", innerClass.name); assertNull(innerClass.outerName); assertNull(innerClass.innerName); assertEquals(ACC_FINAL, innerClass.access); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testEnclosingMethod() { reader.accept(new ClassVisitor(ASM4) { private String outerClass; private String methodName; private String methodDesc; @Override//from w w w. j a v a 2 s .com public void visitOuterClass(String outerClass, String methodName, String methodDesc) { this.outerClass = outerClass; this.methodName = methodName; this.methodDesc = methodDesc; } @Override public void visitEnd() { assertEquals("com/github/rkaippully/jasm/test/gen/ClassAttributesTestOuter", outerClass); assertEquals("enclosingMethod", methodName); assertEquals("V", methodDesc); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testSynthetic() { reader.accept(new ClassVisitor(ASM4) { static final int ACC_SYNTHETIC_ATTRIBUTE = 0x40000; private boolean synthetic; @Override//from w w w . ja v a 2s . c o m public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { // This is how ASM reports synthetic attribute if ((access & ACC_SYNTHETIC_ATTRIBUTE) != 0) this.synthetic = true; } @Override public void visitEnd() { assertTrue(synthetic); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testSignature() { reader.accept(new ClassVisitor(ASM4) { private String signature; @Override/* w w w . j a v a 2 s .c o m*/ public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { this.signature = signature; } @Override public void visitEnd() { assertEquals("<E:Ljava/lang/Object;>Ljava/lang/Object;", signature); } }, 0); }
From source file:com.github.rkaippully.jasm.test.ClassAttributesTest.java
License:Apache License
@Test public void testDeprecated() { reader.accept(new ClassVisitor(ASM4) { private boolean deprecated; @Override//w w w . j a v a 2 s . co m public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { if ((access & ACC_DEPRECATED) != 0) this.deprecated = true; } @Override public void visitEnd() { assertTrue(deprecated); } }, 0); }
From source file:com.github.rkaippully.jasm.test.FieldsTest.java
License:Apache License
@Test public void testAccessFlags() { ClassVisitor v = new ClassVisitor(ASM4) { private int access; @Override//from w w w .j a v a 2 s . co m public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { this.access = access; return null; } @Override public void visitEnd() { assertEquals(ACC_PRIVATE, this.access); } }; reader.accept(v, 0); }
From source file:com.github.rkaippully.jasm.test.FieldsTest.java
License:Apache License
@Test public void testFieldName() { ClassVisitor v = new ClassVisitor(ASM4) { private String name; @Override//from w ww .jav a 2s . co m public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { this.name = name; return null; } @Override public void visitEnd() { assertEquals("field1", this.name); } }; reader.accept(v, 0); }
From source file:com.github.rkaippully.jasm.test.FieldsTest.java
License:Apache License
@Test public void testFieldDescriptor() { ClassVisitor v = new ClassVisitor(ASM4) { private String descriptor; @Override/*from www. j a va 2s . co m*/ public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { this.descriptor = desc; return null; } @Override public void visitEnd() { assertEquals("[I", this.descriptor); } }; reader.accept(v, 0); }