1 package pool;
   2 
   3 import jdk.test.lib.Pair;
   4 
   5 import java.lang.reflect.Constructor;
   6 import java.lang.reflect.Executable;
   7 import java.lang.reflect.Method;
   8 import java.util.ArrayList;
   9 import java.util.List;
  10 import java.util.concurrent.Callable;
  11 
  12 /**
  13  * A helper class that creates executables and callables for internal classes
  14  * It's necessary to have this class to make all helper lambdas not contain
  15  * any of class names that could be used as a pattern (Internal*, *Klass*)
  16  */
  17 public abstract class SubMethodHolder extends MethodHolder {
  18     @Override
  19     public List<Pair<Executable, Callable<?>>> getAllMethods() {
  20         List<Pair<Executable, Callable<?>>> pairs = new ArrayList<>();
  21         {
  22             Method method = getMethod(this, "method", Float.class);
  23             Pair<Executable, Callable<?>> pair = new Pair<>(method,
  24                     () -> method.invoke(this, 3.141592f));
  25             pairs.add(pair);
  26         }
  27         {
  28             Method method = getMethod(this, "methodDup");
  29             Pair<Executable, Callable<?>> pair = new Pair<>(method,
  30                     () -> method.invoke(this));
  31             pairs.add(pair);
  32         }
  33         {
  34             Method method = getMethod(this, "smethod", Integer.class);
  35             Pair<Executable, Callable<?>> pair = new Pair<>(method,
  36                     () -> method.invoke(this, 1024));
  37             pairs.add(pair);
  38         }
  39         try {
  40             Constructor constructor = this.getClass().getConstructor();
  41             Pair<Executable, Callable<?>> pair = new Pair<>(constructor,
  42                     constructor::newInstance);
  43             pairs.add(pair);
  44         } catch (NoSuchMethodException e) {
  45             throw new Error("TESTBUG: unable to get constructor");
  46         }
  47         return pairs;
  48     }
  49 }