ConditionalStepCandidate.java
- package org.jbehave.core.steps;
- import java.lang.reflect.Method;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- import org.jbehave.core.condition.StepConditionMatcher;
- import org.jbehave.core.configuration.Keywords;
- import org.jbehave.core.parsers.StepMatcher;
- import org.jbehave.core.steps.StepCreator.ParametrisedStep;
- public class ConditionalStepCandidate extends StepCandidate {
- private final Map<Method, StepCreator> stepCreators;
- private final StepConditionMatcher stepConditionMatcher;
- private ConditionalStepCandidate(String patternAsString, int priority, StepType stepType,
- Map<Method, StepCreator> stepCreators, Keywords keywords, StepMatcher stepMatcher,
- String parameterPrefixString, StepCreator stepCreator, StepConditionMatcher stepConditionMatcher,
- StepMonitor stepMonitor) {
- super(patternAsString, priority, stepType, null, null, null, keywords, stepMatcher, parameterPrefixString,
- stepCreator, null, stepMonitor);
- this.stepCreators = stepCreators;
- this.stepConditionMatcher = stepConditionMatcher;
- }
- @Override
- public Method getMethod() {
- throw new UnsupportedOperationException();
- }
- @Override
- public Step createMatchedStep(String stepAsString, Map<String, String> namedParameters, List<Step> composedSteps) {
- Map<Method, ParametrisedStep> parametrisedSteps = stepCreators.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey,
- e -> (ParametrisedStep) e.getValue().createParametrisedStep(e.getKey(), stepAsString,
- stepAsString, namedParameters, composedSteps)));
- return getStepCreator().createConditionalStep(stepConditionMatcher, parametrisedSteps);
- }
- public static StepCandidate from(StepConditionMatcher stepConditionMatcher,
- List<StepCandidate> conditionalCandidates) {
- Map<Method, StepCreator> stepCreators = conditionalCandidates.stream()
- .collect(Collectors.toMap(StepCandidate::getMethod, StepCandidate::getStepCreator));
- StepCandidate baseCandidate = conditionalCandidates.get(0);
- return new ConditionalStepCandidate(baseCandidate.getPatternAsString(), baseCandidate.getPriority(),
- baseCandidate.getStepType(), stepCreators, baseCandidate.getKeywords(),
- baseCandidate.getStepMatcher(), baseCandidate.getParameterPrefix(), baseCandidate.getStepCreator(),
- stepConditionMatcher, baseCandidate.getStepMonitor());
- }
- }