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;
}
Aggregations