Search in sources :

Example 1 with ScanningStepsFactory

use of org.jbehave.core.steps.ScanningStepsFactory in project jbehave-core by jbehave.

the class AnnotationBuilder method buildStepsFactory.

/**
 * Builds the {@link InjectableStepsFactory} using annotation
 * {@link UsingSteps} found in the annotated object instance and the
 * configuration provided
 *
 * @param configuration the Configuration
 * @return A {@link InjectableStepsFactory}
 */
public InjectableStepsFactory buildStepsFactory(Configuration configuration) {
    List<Object> stepsInstances = new ArrayList<>();
    InjectableStepsFactory factory = null;
    if (finder.isAnnotationPresent(UsingSteps.class)) {
        List<Class<Object>> stepsClasses = finder.getAnnotatedClasses(UsingSteps.class, Object.class, "instances");
        if (!stepsClasses.isEmpty()) {
            for (Class<Object> stepsClass : stepsClasses) {
                stepsInstances.add(instanceOf(Object.class, stepsClass));
            }
            factory = new InstanceStepsFactory(configuration, stepsInstances);
        }
        List<String> packages = finder.getAnnotatedValues(UsingSteps.class, String.class, "packages");
        if (!packages.isEmpty()) {
            String matchingNames = finder.getAnnotatedValue(UsingSteps.class, String.class, "matchingNames");
            String notMatchingNames = finder.getAnnotatedValue(UsingSteps.class, String.class, "notMatchingNames");
            factory = new ScanningStepsFactory(configuration, packages.toArray(new String[packages.size()])).matchingNames(matchingNames).notMatchingNames(notMatchingNames);
        }
    } else {
        annotationMonitor.annotationNotFound(UsingSteps.class, annotatedClass);
    }
    if (factory == null) {
        factory = new InstanceStepsFactory(configuration);
    }
    return factory;
}
Also used : InjectableStepsFactory(org.jbehave.core.steps.InjectableStepsFactory) InstanceStepsFactory(org.jbehave.core.steps.InstanceStepsFactory) ArrayList(java.util.ArrayList) ScanningStepsFactory(org.jbehave.core.steps.ScanningStepsFactory)

Aggregations

ArrayList (java.util.ArrayList)1 InjectableStepsFactory (org.jbehave.core.steps.InjectableStepsFactory)1 InstanceStepsFactory (org.jbehave.core.steps.InstanceStepsFactory)1 ScanningStepsFactory (org.jbehave.core.steps.ScanningStepsFactory)1