DelegatingExpressionProcessor.java
package org.jbehave.core.expressions;
import java.util.Collection;
import java.util.Optional;
public class DelegatingExpressionProcessor implements ExpressionProcessor<Object> {
private final Collection<ExpressionProcessor<?>> delegates;
public DelegatingExpressionProcessor(Collection<ExpressionProcessor<?>> delegates) {
this.delegates = delegates;
}
@SuppressWarnings("unchecked")
@Override
public Optional<Object> execute(String expression) {
return (Optional<Object>) delegates.stream()
.map(processor -> processor.execute(expression))
.filter(Optional::isPresent)
.findFirst()
.orElseGet(Optional::empty);
}
}