TriggerStrategies { public static <T> TriggerStrategy onNotNull(Supplier<T> supplier){ return new LambdaTriggerStrategy( values -> supplier.extract(values) != null, () -> new HashSet<>(supplier.getChannelIdentifiers()) ); } private  TriggerStrategies(); static TriggerStrategy onTrue(Supplier<Boolean> supplier); static TriggerStrategy onFalse(Supplier<Boolean> supplier); static TriggerStrategy onBecomeTrue(Supplier<Boolean> supplier); static TriggerStrategy onBecomeTrue(Supplier<Boolean> supplier, Boolean initialValue); static TriggerStrategy onBecomeFalse(Supplier<Boolean> supplier); static TriggerStrategy onBecomeFalse(Supplier<Boolean> supplier, Boolean initialValue); static TriggerStrategy onChange(Supplier<T> supplier); static TriggerStrategy onChange(Supplier<T> supplier, T initialValue); static TriggerStrategy onNull(Supplier<T> supplier); static TriggerStrategy onNotNull(Supplier<T> supplier); static TriggerStrategy always();  }
@Test public void isToBeTriggeredOnNotNull(){ TriggerStrategy strategy = onNotNull(booleanChannel("val")); strategy.isToBeTriggered(trueValues); boolean result = strategy.isToBeTriggered(trueValues); assertTrue(result); assertTrue(strategy.getChannelIdentifiers().contains("val")); }