DelegatingEmbedderMonitor.java

  1. package org.jbehave.core.embedder;

  2. import static java.util.Arrays.asList;

  3. import java.io.File;
  4. import java.util.Collection;
  5. import java.util.List;
  6. import java.util.Properties;
  7. import java.util.concurrent.ExecutorService;

  8. import org.jbehave.core.failures.BatchFailures;
  9. import org.jbehave.core.model.Meta;
  10. import org.jbehave.core.model.Scenario;
  11. import org.jbehave.core.model.Story;
  12. import org.jbehave.core.model.StoryDuration;
  13. import org.jbehave.core.model.StoryMaps;
  14. import org.jbehave.core.reporters.ReportsCount;

  15. /**
  16.  * Monitor which collects other {@link EmbedderMonitor}s and delegates all invocations to the collected monitors.
  17.  */
  18. public class DelegatingEmbedderMonitor implements EmbedderMonitor {

  19.     private final Collection<EmbedderMonitor> delegates;

  20.     /**
  21.      * Creates {@link DelegatingEmbedderMonitor} with a given collections of delegates
  22.      *
  23.      * @param delegates the {@link EmbedderMonitor}-s to delegate to
  24.      */
  25.     public DelegatingEmbedderMonitor(Collection<EmbedderMonitor> delegates) {
  26.         this.delegates = delegates;
  27.     }

  28.     /**
  29.      * Creates {@link DelegatingEmbedderMonitor} with a given varargs of delegates
  30.      *
  31.      * @param delegates the {@link EmbedderMonitor}-s to delegate to
  32.      */
  33.     public DelegatingEmbedderMonitor(EmbedderMonitor... delegates) {
  34.         this(asList(delegates));
  35.     }

  36.     @Override
  37.     public void runningEmbeddable(String name) {
  38.         delegates.forEach(d -> d.runningEmbeddable(name));
  39.     }

  40.     @Override
  41.     public void embeddableFailed(String name, Throwable cause) {
  42.         delegates.forEach(d -> d.embeddableFailed(name, cause));
  43.     }

  44.     @Override
  45.     public void embeddableNotConfigurable(String name) {
  46.         delegates.forEach(d -> d.embeddableNotConfigurable(name));
  47.     }

  48.     @Override
  49.     public void embeddablesSkipped(List<String> classNames) {
  50.         delegates.forEach(d -> d.embeddablesSkipped(classNames));
  51.     }

  52.     @Override
  53.     public void metaExcluded(Meta meta, MetaFilter filter) {
  54.         delegates.forEach(d -> d.metaExcluded(meta, filter));
  55.     }

  56.     @Override
  57.     public void runningStory(String path) {
  58.         delegates.forEach(d -> d.runningStory(path));
  59.     }

  60.     @Override
  61.     public void storyFailed(String path, Throwable cause) {
  62.         delegates.forEach(d -> d.storyFailed(path, cause));
  63.     }

  64.     @Override
  65.     public void storiesSkipped(List<String> storyPaths) {
  66.         delegates.forEach(d -> d.storiesSkipped(storyPaths));
  67.     }

  68.     @Override
  69.     public void storiesExcluded(List<Story> excluded, MetaFilter filter, boolean verbose) {
  70.         delegates.forEach(d -> d.storiesExcluded(excluded, filter, verbose));
  71.     }

  72.     @Override
  73.     public void scenarioExcluded(Scenario scenario, MetaFilter filter) {
  74.         delegates.forEach(d -> d.scenarioExcluded(scenario, filter));
  75.     }

  76.     @Override
  77.     public void batchFailed(BatchFailures failures) {
  78.         delegates.forEach(d -> d.batchFailed(failures));
  79.     }

  80.     @Override
  81.     public void beforeOrAfterStoriesFailed() {
  82.         delegates.forEach(EmbedderMonitor::beforeOrAfterStoriesFailed);
  83.     }

  84.     @Override
  85.     public void generatingReportsView(File outputDirectory, List<String> formats, Properties viewProperties) {
  86.         delegates.forEach(d -> d.generatingReportsView(outputDirectory, formats, viewProperties));
  87.     }

  88.     @Override
  89.     public void reportsViewGenerationFailed(File outputDirectory, List<String> formats, Properties viewProperties,
  90.             Throwable cause) {
  91.         delegates.forEach(d -> d.reportsViewGenerationFailed(outputDirectory, formats, viewProperties, cause));
  92.     }

  93.     @Override
  94.     public void reportsViewGenerated(ReportsCount count) {
  95.         delegates.forEach(d -> d.reportsViewGenerated(count));
  96.     }

  97.     @Override
  98.     public void reportsViewFailures(ReportsCount count) {
  99.         delegates.forEach(d -> d.reportsViewFailures(count));
  100.     }

  101.     @Override
  102.     public void reportsViewNotGenerated() {
  103.         delegates.forEach(EmbedderMonitor::reportsViewNotGenerated);
  104.     }

  105.     @Override
  106.     public void runningWithAnnotatedEmbedderRunner(String className) {
  107.         delegates.forEach(d -> d.runningWithAnnotatedEmbedderRunner(className));
  108.     }

  109.     @Override
  110.     public void annotatedInstanceNotOfType(Object annotatedInstance, Class<?> type) {
  111.         delegates.forEach(d -> d.annotatedInstanceNotOfType(annotatedInstance, type));
  112.     }

  113.     @Override
  114.     public void mappingStory(String storyPath, List<String> metaFilters) {
  115.         delegates.forEach(d -> d.mappingStory(storyPath, metaFilters));
  116.     }

  117.     @Override
  118.     public void generatingMapsView(File outputDirectory, StoryMaps storyMaps, Properties viewProperties) {
  119.         delegates.forEach(d -> d.generatingMapsView(outputDirectory, storyMaps, viewProperties));
  120.     }

  121.     @Override
  122.     public void mapsViewGenerationFailed(File outputDirectory, StoryMaps storyMaps, Properties viewProperties,
  123.             Throwable cause) {
  124.         delegates.forEach(d -> d.mapsViewGenerationFailed(outputDirectory, storyMaps, viewProperties, cause));
  125.     }

  126.     @Override
  127.     public void processingSystemProperties(Properties properties) {
  128.         delegates.forEach(d -> d.processingSystemProperties(properties));
  129.     }

  130.     @Override
  131.     public void systemPropertySet(String name, String value) {
  132.         delegates.forEach(d -> d.systemPropertySet(name, value));
  133.     }

  134.     @Override
  135.     public void storyTimeout(Story story, StoryDuration storyDuration) {
  136.         delegates.forEach(d -> d.storyTimeout(story, storyDuration));
  137.     }

  138.     @Override
  139.     public void usingThreads(int threads) {
  140.         delegates.forEach(d -> d.usingThreads(threads));
  141.     }

  142.     @Override
  143.     public void usingExecutorService(ExecutorService executorService) {
  144.         delegates.forEach(d -> d.usingExecutorService(executorService));
  145.     }

  146.     @Override
  147.     public void usingControls(EmbedderControls embedderControls) {
  148.         delegates.forEach(d -> d.usingControls(embedderControls));
  149.     }

  150.     @Override
  151.     public void invalidTimeoutFormat(String path) {
  152.         delegates.forEach(d -> d.invalidTimeoutFormat(path));
  153.     }

  154.     @Override
  155.     public void usingTimeout(String path, long timeout) {
  156.         delegates.forEach(d -> d.usingTimeout(path, timeout));
  157.     }
  158. }