1 30 31 package oracle.toplink.libraries.asm.tree; 32 33 import oracle.toplink.libraries.asm.ClassAdapter; 34 import oracle.toplink.libraries.asm.CodeVisitor; 35 import oracle.toplink.libraries.asm.ClassVisitor; 36 import oracle.toplink.libraries.asm.Attribute; 37 38 61 62 public class TreeClassAdapter extends ClassAdapter { 63 64 67 68 public ClassNode classNode; 69 70 75 76 public TreeClassAdapter (final ClassVisitor cv) { 77 super(cv); 78 } 79 80 public void visit ( 81 final int version, 82 final int access, 83 final String name, 84 final String superName, 85 final String [] interfaces, 86 final String sourceFile) 87 { 88 classNode = new ClassNode(version, access, name, superName, interfaces, sourceFile); 89 } 90 91 public void visitInnerClass ( 92 final String name, 93 final String outerName, 94 final String innerName, 95 final int access) 96 { 97 InnerClassNode icn = new InnerClassNode(name, outerName, innerName, access); 98 classNode.innerClasses.add(icn); 99 } 100 101 public void visitField ( 102 final int access, 103 final String name, 104 final String desc, 105 final Object value, 106 final Attribute attrs) 107 { 108 FieldNode fn = new FieldNode(access, name, desc, value, attrs); 109 classNode.fields.add(fn); 110 } 111 112 public CodeVisitor visitMethod ( 113 final int access, 114 final String name, 115 final String desc, 116 final String [] exceptions, 117 final Attribute attrs) 118 { 119 MethodNode mn = new MethodNode(access, name, desc, exceptions, attrs); 120 classNode.methods.add(mn); 121 return new TreeCodeAdapter(mn); 122 } 123 124 public void visitAttribute (final Attribute attr) { 125 attr.next = classNode.attrs; 126 classNode.attrs = attr; 127 } 128 129 public void visitEnd () { 130 if( cv!=null) { 131 classNode.accept(cv); 132 } 133 } 134 } 135 | Popular Tags |