BeforeOrAfterStep.java

  1. package org.jbehave.core.steps;

  2. import java.lang.reflect.Method;

  3. import org.apache.commons.lang3.builder.ToStringBuilder;
  4. import org.apache.commons.lang3.builder.ToStringStyle;
  5. import org.jbehave.core.annotations.AfterScenario;
  6. import org.jbehave.core.annotations.AfterScenario.Outcome;
  7. import org.jbehave.core.annotations.AfterStory;
  8. import org.jbehave.core.annotations.BeforeScenario;
  9. import org.jbehave.core.annotations.BeforeStory;
  10. import org.jbehave.core.model.Meta;

  11. /**
  12.  * A BeforeOrAfterStep is associated to a Java method annotated with
  13.  * {@link BeforeStory}, {@link AfterStory}, {@link BeforeScenario} or
  14.  * {@link AfterScenario} in a {@link CandidateSteps} instance class. The
  15.  * BeforeOrAfterStep is responsible for the creation of the executable step via
  16.  * the {@link StepCreator}.
  17.  */
  18. public class BeforeOrAfterStep {

  19.     private final Method method;
  20.     private final int order;
  21.     private final StepCreator stepCreator;
  22.     private final Outcome outcome;

  23.     public BeforeOrAfterStep(Method method, int order, Outcome outcome, StepCreator stepCreator) {
  24.         this.method = method;
  25.         this.order = order;
  26.         this.outcome = outcome;
  27.         this.stepCreator = stepCreator;
  28.     }

  29.     public Method getMethod() {
  30.         return method;
  31.     }

  32.     public int getOrder() {
  33.         return order;
  34.     }

  35.     public Step createStep() {
  36.         return createStepWith(Meta.EMPTY);
  37.     }

  38.     public Step createStepWith(Meta meta) {
  39.         return stepCreator.createBeforeOrAfterStep(method, meta);
  40.     }

  41.     public Step createStepUponOutcome(Meta storyAndScenarioMeta) {
  42.         return stepCreator.createAfterStepUponOutcome(method, outcome, storyAndScenarioMeta);
  43.     }

  44.     @Override
  45.     public String toString() {
  46.         return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
  47.                 .append(method)
  48.                 .append(order)
  49.                 .append(outcome)
  50.                 .toString();
  51.     }
  52. }