package com.netflix.suro.routing.filter; import com.google.common.base.Predicate; import com.google.common.base.Predicates; public class OrMessageFilter extends BaseMessageFilter { final private Predicate<Object> orPredicate; public OrMessageFilter(MessageFilter... filters) { this.orPredicate = Predicates.or(filters); } public OrMessageFilter(Iterable<? extends MessageFilter> filters) { this.orPredicate = Predicates.or(filters); } @Override public boolean apply(Object input) { return orPredicate.apply(input); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("OrMessageFilter"); sb.append("{orPredicate=").append(orPredicate); sb.append('}'); return sb.toString(); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } OrMessageFilter that = (OrMessageFilter) o; if (orPredicate != null ? !orPredicate.equals(that.orPredicate) : that.orPredicate != null) { return false; } return true; } @Override public int hashCode() { return orPredicate != null ? orPredicate.hashCode() : 0; } }