DelegatingExpressionProcessor.java

  1. package org.jbehave.core.expressions;

  2. import java.util.Collection;
  3. import java.util.Optional;

  4. public class DelegatingExpressionProcessor implements ExpressionProcessor<Object> {

  5.     private final Collection<ExpressionProcessor<?>> delegates;

  6.     public DelegatingExpressionProcessor(Collection<ExpressionProcessor<?>> delegates) {
  7.         this.delegates = delegates;
  8.     }

  9.     @SuppressWarnings("unchecked")
  10.     @Override
  11.     public Optional<Object> execute(String expression) {
  12.         return (Optional<Object>) delegates.stream()
  13.                 .map(processor -> processor.execute(expression))
  14.                 .filter(Optional::isPresent)
  15.                 .findFirst()
  16.                 .orElseGet(Optional::empty);
  17.     }
  18. }