PredicatedAction.java 861 B

12345678910111213141516171819202122232425262728
  1. package utils;
  2. /**
  3. * A predicated action is one where a condition must be satisfied in order to proceed with the request. If the
  4. * condition is not satisfied then a supplied status result is yielded.
  5. */
  6. import com.google.inject.Injector;
  7. import java.util.concurrent.CompletableFuture;
  8. import java.util.concurrent.CompletionStage;
  9. import javax.inject.Inject;
  10. import play.mvc.Action;
  11. import play.mvc.Http;
  12. import play.mvc.Result;
  13. public class PredicatedAction extends Action<Predicated> {
  14. @Inject private Injector injector;
  15. @Override
  16. public CompletionStage<Result> call(final Http.Context ctx) {
  17. final Predicate p = injector.getInstance(configuration.predicate());
  18. if (p.condition()) {
  19. return delegate.call(ctx);
  20. }
  21. return CompletableFuture.supplyAsync(() -> status(configuration.failed()));
  22. }
  23. }