package org.jbehave.core.configuration.weld; import static org.jbehave.core.reporters.Format.CONSOLE; import static org.jbehave.core.reporters.Format.HTML; import static org.jbehave.core.reporters.Format.TXT; import static org.jbehave.core.reporters.Format.XML; import java.lang.reflect.Type; import java.text.SimpleDateFormat; import java.util.Locale; import java.util.Properties; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Produces; import org.jbehave.core.annotations.weld.WeldConfiguration; import org.jbehave.core.configuration.Configuration; import org.jbehave.core.configuration.MostUsefulConfiguration; import org.jbehave.core.embedder.StoryControls; import org.jbehave.core.failures.SilentlyAbsorbingFailure; import org.jbehave.core.i18n.LocalizedKeywords; import org.jbehave.core.io.LoadFromURL; import org.jbehave.core.model.TableTransformers; import org.jbehave.core.parsers.RegexPrefixCapturingPatternParser; import org.jbehave.core.reporters.StoryReporterBuilder; import org.jbehave.core.steps.ParameterConverters; import org.jbehave.core.steps.ParameterConverters.ParameterConverter; @ApplicationScoped public class ConfigurationProducer { public ConfigurationProducer() {} @Produces @WeldConfiguration Configuration getConfiguration() { Properties viewResources = new Properties(); viewResources.setProperty("index", "my-reports-index.ftl"); viewResources.setProperty("decorateNonHtml", "true"); TableTransformers tableTransformers = new TableTransformers(); return new MostUsefulConfiguration() .useStoryControls(new StoryControls() .doDryRun(true) .doSkipScenariosAfterFailure(true)) .useFailureStrategy(new SilentlyAbsorbingFailure()) .useStoryLoader(new LoadFromURL()) .useStepPatternParser(new RegexPrefixCapturingPatternParser("MyPrefix")) .useStoryReporterBuilder(new StoryReporterBuilder() .withDefaultFormats() .withFormats(CONSOLE, HTML, TXT, XML) .withKeywords(new LocalizedKeywords(Locale.ITALIAN)) .withRelativeDirectory("my-output-directory") .withViewResources(viewResources).withFailureTrace(true)) .useParameterConverters(new ParameterConverters(tableTransformers) .addConverters(new CustomConverter(),new MyDateConverter())) .useTableTransformers(tableTransformers); } public static class CustomConverter implements ParameterConverter { public boolean accept(Type type) { return ((Class<?>) type).isAssignableFrom(CustomObject.class); } public Object convertValue(String value, Type type) { return new CustomObject(value); } } public static class MyDateConverter extends ParameterConverters.DateConverter { public MyDateConverter() { super(new SimpleDateFormat("yyyy-MM-dd")); } } public static class CustomObject { private final String value; public CustomObject(String value) { this.value = value; } @Override public String toString() { return value; } } }