PrintingStepMonitor.java
- package org.jbehave.core.steps;
- import static java.util.Arrays.asList;
- import java.lang.annotation.Annotation;
- import java.lang.reflect.Method;
- import java.lang.reflect.Type;
- import java.util.Collections;
- import java.util.List;
- import java.util.Queue;
- import java.util.stream.Collectors;
- import org.jbehave.core.model.StepPattern;
- /**
- * Abstract {@code StepMonitor} that prints to output which should be defined in child implementations.
- */
- public abstract class PrintingStepMonitor implements StepMonitor {
- private static final String CONVERTED_VALUE_OF_TYPE = "Converted value '%s' of type '%s' to '%s' with %s '%s'";
- private static final String STEP_MATCHES_TYPE = "Step '%s' (with previous step '%s') %s type '%s' for method '%s' "
- + "with annotations '%s' in steps instance '%s'";
- private static final String STEP_MATCHES_PATTERN = "Step '%s' %s pattern '%s' for method '%s' with annotations '%s'"
- + " in steps instance '%s'";
- private static final String PERFORMING = "Performing step '%s'%s";
- private static final String DRY_RUN = " (DRY RUN)";
- private static final String MATCHES = "matches";
- private static final String DOES_NOT_MATCH = "does not match";
- private static final String USING_NAME_FOR_PARAMETER = "Using %s name '%s' for parameter position %d";
- private static final String ANNOTATED = "annotated";
- private static final String PARAMETER = "parameter";
- private static final String TABLE_ANNOTATED = "table annotated";
- private static final String TABLE_PARAMETER = "table parameter";
- private static final String USING_NATURAL_ORDER_FOR_PARAMETER = "Using natural order for parameter position %d";
- private static final String FOUND_PARAMETER = "Found parameter '%s' for position %d";
- private static final String STEPS_CONTEXT_PARAMETER = "Found parameter '%s' from Steps Context";
- @Override
- public void stepMatchesType(String step, String previous, boolean matches, StepType stepType, Method method,
- Object stepsInstance) {
- print(STEP_MATCHES_TYPE, step, previous, matches(matches), stepType, method, getAnnotations(method),
- stepsInstance);
- }
- @Override
- public void stepMatchesPattern(String step, boolean matches, StepPattern stepPattern, Method method,
- Object stepsInstance) {
- print(STEP_MATCHES_PATTERN, step, matches(matches), stepPattern, method, getAnnotations(method), stepsInstance);
- }
- @Override
- public void convertedValueOfType(String value, Type type, Object converted, Queue<Class<?>> converterClasses) {
- String classes = converterClasses.stream().map(Class::getName).collect(Collectors.joining(" -> "));
- print(CONVERTED_VALUE_OF_TYPE, value, type, converted, "converters", classes);
- }
- @Override
- public void beforePerforming(String step, boolean dryRun, Method method) {
- print(PERFORMING, step, dryRun ? DRY_RUN : "");
- }
- @Override
- public void afterPerforming(String step, boolean dryRun, Method method) {
- }
- @Override
- public void usingAnnotatedNameForParameter(String name, int position) {
- print(USING_NAME_FOR_PARAMETER, ANNOTATED, name, position);
- }
- @Override
- public void usingParameterNameForParameter(String name, int position) {
- print(USING_NAME_FOR_PARAMETER, PARAMETER, name, position);
- }
- @Override
- public void usingTableAnnotatedNameForParameter(String name, int position) {
- print(USING_NAME_FOR_PARAMETER, TABLE_ANNOTATED, name, position);
- }
- @Override
- public void usingTableParameterNameForParameter(String name, int position) {
- print(USING_NAME_FOR_PARAMETER, TABLE_PARAMETER, name, position);
- }
- @Override
- public void usingNaturalOrderForParameter(int position) {
- print(USING_NATURAL_ORDER_FOR_PARAMETER, position);
- }
- @Override
- public void foundParameter(String parameter, int position) {
- print(FOUND_PARAMETER, parameter, position);
- }
- @Override
- public void usingStepsContextParameter(String parameter) {
- print(STEPS_CONTEXT_PARAMETER, parameter);
- }
- protected abstract void print(String format, Object... args);
- private List<Annotation> getAnnotations(Method method) {
- return method != null ? asList(method.getAnnotations()) : Collections.<Annotation>emptyList();
- }
- private String matches(boolean matches) {
- return matches ? MATCHES : DOES_NOT_MATCH;
- }
- }