ReflectionBasedStepConditionMatcher.java

  1. package org.jbehave.core.condition;

  2. import java.lang.reflect.Constructor;
  3. import java.util.function.Predicate;

  4. public class ReflectionBasedStepConditionMatcher implements StepConditionMatcher {

  5.     @Override
  6.     public boolean matches(Class<? extends Predicate<Object>> type, Object value) throws StepConditionMatchException {
  7.         try {
  8.             Constructor<? extends Predicate<Object>> constructor = type.getConstructor();
  9.             Predicate<Object> instance = constructor.newInstance();
  10.             return instance.test(value);
  11.         } catch (NoSuchMethodException e) {
  12.             throw new StepConditionMatchException(
  13.                     "Condition implementation class must have public no-args constructor");
  14.         } catch (ReflectiveOperationException | IllegalArgumentException e) {
  15.             throw new StepConditionMatchException(e);
  16.         }
  17.     }

  18. }