DelegatingTableTransformerMonitor.java
package org.jbehave.core.model;
import java.util.Collection;
import java.util.function.Consumer;
import org.jbehave.core.model.ExamplesTable.TableProperties;
/**
* Monitor which collects other {@link TableTransformerMonitor}-s and delegates all
* invocations to the collected monitors.
*/
public class DelegatingTableTransformerMonitor implements TableTransformerMonitor {
private final Collection<TableTransformerMonitor> delegates;
/**
* Creates DelegatingTableTransformerMonitor with a given collections of delegates
*
* @param delegates the {@link TableTransformerMonitor}-s to delegate to
*/
public DelegatingTableTransformerMonitor(Collection<TableTransformerMonitor> delegates) {
this.delegates = delegates;
}
@Override
public void beforeTransformerApplying(String transformerName, TableProperties properties, String inputTable) {
delegate(monitor -> monitor.beforeTransformerApplying(transformerName, properties, inputTable));
}
@Override
public void afterTransformerApplying(String transformerName, TableProperties properties, String outputTable) {
delegate(monitor -> monitor.afterTransformerApplying(transformerName, properties, outputTable));
}
private void delegate(Consumer<TableTransformerMonitor> monitorConsumer) {
delegates.forEach(monitorConsumer);
}
}