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