View Javadoc
1   /*
2    * Copyright (c) 2006 JMockit developers
3    * This file is subject to the terms of the MIT license (see LICENSE.txt).
4    */
5   package mockit.internal.classGeneration;
6   
7   import static mockit.asm.jvmConstants.Access.PUBLIC;
8   
9   import edu.umd.cs.findbugs.annotations.NonNull;
10  import edu.umd.cs.findbugs.annotations.Nullable;
11  
12  import mockit.asm.classes.ClassReader;
13  import mockit.asm.classes.ClassVisitor;
14  
15  /**
16   * Generates a concrete subclass for an {@code abstract} base class.
17   */
18  public final class ConcreteSubclass<T> extends ImplementationClass<T> {
19      public ConcreteSubclass(@NonNull Class<?> baseClass) {
20          super(baseClass);
21      }
22  
23      @NonNull
24      @Override
25      protected ClassVisitor createMethodBodyGenerator(@NonNull ClassReader typeReader) {
26          return new BaseSubclassGenerator(sourceClass, typeReader, null, generatedClassName, false) {
27              @Override
28              protected void generateMethodImplementation(String className, int access, @NonNull String name,
29                      @NonNull String desc, @Nullable String signature, @Nullable String[] exceptions) {
30                  mw = cw.visitMethod(PUBLIC, name, desc, signature, exceptions);
31                  generateEmptyImplementation(desc);
32              }
33          };
34      }
35  }