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.internal.classGeneration;
7   
8   import static mockit.asm.jvmConstants.Access.PUBLIC;
9   
10  import edu.umd.cs.findbugs.annotations.NonNull;
11  import edu.umd.cs.findbugs.annotations.Nullable;
12  
13  import mockit.asm.classes.ClassReader;
14  import mockit.asm.classes.ClassVisitor;
15  
16  /**
17   * Generates a concrete subclass for an {@code abstract} base class.
18   */
19  public final class ConcreteSubclass<T> extends ImplementationClass<T> {
20      public ConcreteSubclass(@NonNull Class<?> baseClass) {
21          super(baseClass);
22      }
23  
24      @NonNull
25      @Override
26      protected ClassVisitor createMethodBodyGenerator(@NonNull ClassReader typeReader) {
27          return new BaseSubclassGenerator(sourceClass, typeReader, null, generatedClassName, false) {
28              @Override
29              protected void generateMethodImplementation(String className, int access, @NonNull String name,
30                      @NonNull String desc, @Nullable String signature, @Nullable String[] exceptions) {
31                  mw = cw.visitMethod(PUBLIC, name, desc, signature, exceptions);
32                  generateEmptyImplementation(desc);
33              }
34          };
35      }
36  }