UnmodifiableConfiguration.java
package org.jbehave.core.configuration;
import java.util.Comparator;
import java.util.Set;
import com.thoughtworks.paranamer.Paranamer;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.jbehave.core.condition.StepConditionMatcher;
import org.jbehave.core.embedder.StoryControls;
import org.jbehave.core.expressions.ExpressionResolver;
import org.jbehave.core.failures.FailureStrategy;
import org.jbehave.core.failures.PendingStepStrategy;
import org.jbehave.core.io.StoryLoader;
import org.jbehave.core.io.StoryPathResolver;
import org.jbehave.core.model.ExamplesTableFactory;
import org.jbehave.core.model.Story;
import org.jbehave.core.model.TableTransformerMonitor;
import org.jbehave.core.parsers.AliasParser;
import org.jbehave.core.parsers.CompositeParser;
import org.jbehave.core.parsers.StepPatternParser;
import org.jbehave.core.parsers.StoryParser;
import org.jbehave.core.reporters.StoryReporter;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.reporters.ViewGenerator;
import org.jbehave.core.steps.ParameterControls;
import org.jbehave.core.steps.ParameterConverters;
import org.jbehave.core.steps.StepCollector;
import org.jbehave.core.steps.StepMonitor;
/**
* Decorator of Configuration that disables modification of configuration
* elements.
*/
public class UnmodifiableConfiguration extends Configuration {
private final Configuration delegate;
public UnmodifiableConfiguration(Configuration delegate) {
this.delegate = delegate;
}
@Override
public StoryReporter defaultStoryReporter() {
return delegate.defaultStoryReporter();
}
@Override
public StoryParser storyParser() {
return delegate.storyParser();
}
@Override
public AliasParser aliasParser() {
return delegate.aliasParser();
}
@Override
public Set<String> aliasPaths() {
return delegate.aliasPaths();
}
@Override
public CompositeParser compositeParser() {
return delegate.compositeParser();
}
public PendingStepStrategy pendingStepStrategy() {
return delegate.pendingStepStrategy();
}
@Override
public StepCollector stepCollector() {
return delegate.stepCollector();
}
@Override
public FailureStrategy failureStrategy() {
return delegate.failureStrategy();
}
@Override
public Keywords keywords() {
return delegate.keywords();
}
@Override
public ParameterConverters parameterConverters() {
return delegate.parameterConverters();
}
@Override
public ExpressionResolver expressionResolver() {
return delegate.expressionResolver();
}
@Override
public ParameterControls parameterControls() {
return delegate.parameterControls();
}
@Override
public Paranamer paranamer() {
return delegate.paranamer();
}
@Override
public ViewGenerator viewGenerator() {
return delegate.viewGenerator();
}
@Override
public ExamplesTableFactory examplesTableFactory() {
return delegate.examplesTableFactory();
}
@Override
public StepMonitor stepMonitor() {
return delegate.stepMonitor();
}
@Override
public StepPatternParser stepPatternParser() {
return delegate.stepPatternParser();
}
@Override
public boolean dryRun() {
return delegate.dryRun();
}
@Override
public StoryControls storyControls() {
return delegate.storyControls();
}
@Override
public StoryLoader storyLoader() {
return delegate.storyLoader();
}
@Override
public StoryPathResolver storyPathResolver() {
return delegate.storyPathResolver();
}
@Override
public StepConditionMatcher stepConditionMatcher() {
return delegate.stepConditionMatcher();
}
@Override
public TableTransformerMonitor tableTransformerMonitor() {
return delegate.tableTransformerMonitor();
}
@Override
public Configuration useStepConditionMatcher(StepConditionMatcher stepConditionMatcher) {
throw notAllowed();
}
@Override
public StoryReporter storyReporter(String storyPath) {
return delegate.storyReporter(storyPath);
}
@Override
public StoryReporterBuilder storyReporterBuilder() {
return delegate.storyReporterBuilder();
}
@Override
public Comparator<Story> storyExecutionComparator() {
return delegate.storyExecutionComparator();
}
@Override
public Configuration useKeywords(Keywords keywords) {
throw notAllowed();
}
@Override
public Configuration useStepCollector(StepCollector stepCollector) {
throw notAllowed();
}
@Override
public Configuration usePendingStepStrategy(PendingStepStrategy pendingStepStrategy) {
throw notAllowed();
}
@Override
public Configuration useFailureStrategy(FailureStrategy failureStrategy) {
throw notAllowed();
}
@Override
public Configuration doDryRun(Boolean dryRun) {
throw notAllowed();
}
@Override
public Configuration useStoryControls(StoryControls storyControls) {
throw notAllowed();
}
@Override
public Configuration useStoryParser(StoryParser storyParser) {
throw notAllowed();
}
@Override
public Configuration useAliasParser(AliasParser storyParser) {
throw notAllowed();
}
@Override
public Configuration useAliasPaths(Set<String> aliasPaths) {
throw notAllowed();
}
@Override
public Configuration useCompositeParser(CompositeParser compositeParser) {
throw notAllowed();
}
@Override
public Configuration useDefaultStoryReporter(StoryReporter storyReporter) {
throw notAllowed();
}
@Override
public Configuration useParameterConverters(ParameterConverters parameterConverters) {
throw notAllowed();
}
@Override
public Configuration useExpressionResolver(ExpressionResolver expressionResolver) {
throw notAllowed();
}
@Override
public Configuration useParameterControls(ParameterControls parameterControls) {
throw notAllowed();
}
@Override
public Configuration useParanamer(Paranamer paranamer) {
throw notAllowed();
}
@Override
public Configuration useStepMonitor(StepMonitor stepMonitor) {
throw notAllowed();
}
@Override
public Configuration useStepPatternParser(StepPatternParser stepPatternParser) {
throw notAllowed();
}
@Override
public Configuration useViewGenerator(ViewGenerator viewGenerator) {
throw notAllowed();
}
@Override
public Configuration useStoryLoader(StoryLoader storyLoader) {
throw notAllowed();
}
@Override
public Configuration useExamplesTableFactory(ExamplesTableFactory examplesTableFactory) {
throw notAllowed();
}
@Override
public Configuration useStoryPathResolver(StoryPathResolver storyPathResolver) {
throw notAllowed();
}
@Override
public Configuration useStoryReporterBuilder(StoryReporterBuilder storyReporterBuilder) {
throw notAllowed();
}
@Override
public Configuration useStoryExecutionComparator(Comparator<Story> storyExecutionComparator) {
throw notAllowed();
}
@Override
public Configuration useTableTransformerMonitor(TableTransformerMonitor tableTransformerMonitor) {
throw notAllowed();
}
private RuntimeException notAllowed() {
return new ModificationNotAllowed();
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append(delegate).toString();
}
@SuppressWarnings("serial")
public static class ModificationNotAllowed extends RuntimeException {
public ModificationNotAllowed() {
super("Configuration elements are unmodifiable");
}
}
}