View Javadoc
1   package mockit.asm.classes;
2   
3   import edu.umd.cs.findbugs.annotations.NonNull;
4   import edu.umd.cs.findbugs.annotations.Nullable;
5   
6   import mockit.asm.annotations.AnnotationVisitor;
7   import mockit.asm.fields.FieldVisitor;
8   import mockit.asm.methods.MethodVisitor;
9   
10  /**
11   * Same as {@link ClassVisitor}, except it always wraps a {@link ClassWriter}.
12   */
13  public class WrappingClassVisitor extends ClassVisitor {
14      /**
15       * The class visitor to which this visitor must delegate method calls.
16       */
17      @NonNull
18      protected final ClassWriter cw;
19  
20      /**
21       * Constructs a new WrappingClassVisitor.
22       *
23       * @param cw
24       *            the class writer to which this visitor must delegate method calls.
25       */
26      protected WrappingClassVisitor(@NonNull ClassWriter cw) {
27          this.cw = cw;
28      }
29  
30      @Override
31      public void visit(int version, int access, @NonNull String name, @NonNull ClassInfo additionalInfo) {
32          cw.visit(version, access, name, additionalInfo);
33      }
34  
35      @Nullable
36      @Override
37      public AnnotationVisitor visitAnnotation(@NonNull String desc) {
38          return cw.visitAnnotation(desc);
39      }
40  
41      @Override
42      public void visitInnerClass(@NonNull String name, @Nullable String outerName, @Nullable String innerName,
43              int access) {
44          cw.visitInnerClass(name, outerName, innerName, access);
45      }
46  
47      @Nullable
48      @Override
49      public FieldVisitor visitField(int access, @NonNull String name, @NonNull String desc, @Nullable String signature,
50              @Nullable Object value) {
51          return cw.visitField(access, name, desc, signature, value);
52      }
53  
54      @Override
55      public MethodVisitor visitMethod(int access, @NonNull String name, @NonNull String desc, @Nullable String signature,
56              @Nullable String[] exceptions) {
57          return cw.visitMethod(access, name, desc, signature, exceptions);
58      }
59  
60      @Override
61      public final byte[] toByteArray() {
62          return cw.toByteArray();
63      }
64  }