/** * Generic version of Selectors.predicate() * @param p * @return */ public static <T> Selector<T> typedPredicate(final Predicate<T> p) { Predicate<Object> x = new Predicate<Object>() { @Override public boolean test(Object t) { if (t != null) { try { return p.test((T) t); } catch (ClassCastException e) { // Not really a problem. Due to Java's type erasure, // can't do an instnaceof check, so this will // have to do. } } return false; } }; return Selectors.predicate(x); }
public static Selector streamArn(String arn) { return Selectors.predicate(it -> { if (it instanceof KinesisRecord) { KinesisRecord kr = (KinesisRecord) it; return arn.equals(kr.getStreamArn()); } return false; }); }
public static Selector queueName(String name) { return Selectors.predicate(it -> { if (it instanceof SQSMessage) { return ((SQSMessage) it).getUrl().endsWith("/" + name); } return false; }); } }
public Selector eventsFromBridgeSelector() { return Selectors.predicate(p -> { if (p instanceof SQSMessage) { return ((SQSMessage) p).getBridge() == this; } return false; }); } }
public static Selector streamName(String name) { return Selectors.predicate(it -> { if (it instanceof KinesisRecord) { KinesisRecord kr = (KinesisRecord) it; return kr.getStreamName().equals(name); } return false; }); } }
public Selector eventsFromBridgeSelector() { return Selectors.predicate(p -> { if (p instanceof KinesisRecord) { return ((KinesisRecord) p).getBridge() == this; } return false; }); }
public static Selector arn(String arn) { return Selectors.predicate(it -> { if (it instanceof SQSMessage) { String arnx = ((SQSMessage) it).getMessage().getAttributes().getOrDefault("arn", null); if (arnx != null && arnx.equals(arn)) { return true; } } return false; }); }
@Override @SuppressWarnings("unchecked") public HttpMappings add(Predicate<? super HttpChannel> condition, Function<? super HttpChannel, ? extends Publisher<Void>> handler) { Selector<HttpChannel> selector; if(Selector.class.isAssignableFrom(condition.getClass())) { selector = (Selector<HttpChannel>) condition; } else{ selector = Selectors.predicate(condition); } routedWriters.register(selector, new HttpHandlerMapping(condition, handler, selector.getHeaderResolver())); return this; }