/* * Decompiled with CFR 0.152. */ package com.google.common.base; import com.google.common.annotations.Beta; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.regex.Pattern; import javax.annotation.Nullable; @GwtCompatible(emulated=true) public final class Predicates { private static final Joiner COMMA_JOINER = Joiner.on(','); private Predicates() { } @GwtCompatible(serializable=true) public static Predicate alwaysTrue() { return ObjectPredicate.ALWAYS_TRUE.withNarrowedType(); } @GwtCompatible(serializable=true) public static Predicate alwaysFalse() { return ObjectPredicate.ALWAYS_FALSE.withNarrowedType(); } @GwtCompatible(serializable=true) public static Predicate isNull() { return ObjectPredicate.IS_NULL.withNarrowedType(); } @GwtCompatible(serializable=true) public static Predicate notNull() { return ObjectPredicate.NOT_NULL.withNarrowedType(); } public static Predicate not(Predicate predicate) { return new NotPredicate(predicate); } public static Predicate and(Iterable> components) { return new AndPredicate(Predicates.defensiveCopy(components)); } public static Predicate and(Predicate ... components) { return new AndPredicate(Predicates.defensiveCopy(components)); } public static Predicate and(Predicate first, Predicate second) { return new AndPredicate(Predicates.asList(Preconditions.checkNotNull(first), Preconditions.checkNotNull(second))); } public static Predicate or(Iterable> components) { return new OrPredicate(Predicates.defensiveCopy(components)); } public static Predicate or(Predicate ... components) { return new OrPredicate(Predicates.defensiveCopy(components)); } public static Predicate or(Predicate first, Predicate second) { return new OrPredicate(Predicates.asList(Preconditions.checkNotNull(first), Preconditions.checkNotNull(second))); } public static Predicate equalTo(@Nullable T target) { return target == null ? Predicates.isNull() : new IsEqualToPredicate(target); } @GwtIncompatible(value="Class.isInstance") public static Predicate instanceOf(Class clazz) { return new InstanceOfPredicate(clazz); } @GwtIncompatible(value="Class.isAssignableFrom") @Beta public static Predicate> assignableFrom(Class clazz) { return new AssignableFromPredicate(clazz); } public static Predicate in(Collection target) { return new InPredicate(target); } public static Predicate compose(Predicate predicate, Function function) { return new CompositionPredicate(predicate, function); } @GwtIncompatible(value="java.util.regex.Pattern") public static Predicate containsPattern(String pattern) { return new ContainsPatternFromStringPredicate(pattern); } @GwtIncompatible(value="java.util.regex.Pattern") public static Predicate contains(Pattern pattern) { return new ContainsPatternPredicate(pattern); } private static List> asList(Predicate first, Predicate second) { return Arrays.asList(first, second); } private static List defensiveCopy(T ... array) { return Predicates.defensiveCopy(Arrays.asList(array)); } static List defensiveCopy(Iterable iterable) { ArrayList list = new ArrayList(); for (T element : iterable) { list.add(Preconditions.checkNotNull(element)); } return list; } @GwtIncompatible(value="Only used by other GWT-incompatible code.") private static class ContainsPatternFromStringPredicate extends ContainsPatternPredicate { private static final long serialVersionUID = 0L; ContainsPatternFromStringPredicate(String string) { super(Pattern.compile(string)); } @Override public String toString() { String string = String.valueOf(String.valueOf(this.pattern.pattern())); return new StringBuilder(28 + string.length()).append("Predicates.containsPattern(").append(string).append(")").toString(); } } @GwtIncompatible(value="Only used by other GWT-incompatible code.") private static class ContainsPatternPredicate implements Predicate, Serializable { final Pattern pattern; private static final long serialVersionUID = 0L; ContainsPatternPredicate(Pattern pattern) { this.pattern = Preconditions.checkNotNull(pattern); } @Override public boolean apply(CharSequence t) { return this.pattern.matcher(t).find(); } public int hashCode() { return Objects.hashCode(this.pattern.pattern(), this.pattern.flags()); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof ContainsPatternPredicate) { ContainsPatternPredicate that = (ContainsPatternPredicate)obj; return Objects.equal(this.pattern.pattern(), that.pattern.pattern()) && Objects.equal(this.pattern.flags(), that.pattern.flags()); } return false; } public String toString() { String patternString = Objects.toStringHelper(this.pattern).add("pattern", this.pattern.pattern()).add("pattern.flags", this.pattern.flags()).toString(); String string = String.valueOf(String.valueOf(patternString)); return new StringBuilder(21 + string.length()).append("Predicates.contains(").append(string).append(")").toString(); } } private static class CompositionPredicate implements Predicate, Serializable { final Predicate p; final Function f; private static final long serialVersionUID = 0L; private CompositionPredicate(Predicate p, Function f) { this.p = Preconditions.checkNotNull(p); this.f = Preconditions.checkNotNull(f); } @Override public boolean apply(@Nullable A a) { return this.p.apply(this.f.apply(a)); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof CompositionPredicate) { CompositionPredicate that = (CompositionPredicate)obj; return this.f.equals(that.f) && this.p.equals(that.p); } return false; } public int hashCode() { return this.f.hashCode() ^ this.p.hashCode(); } public String toString() { String string = String.valueOf(String.valueOf(this.p.toString())); String string2 = String.valueOf(String.valueOf(this.f.toString())); return new StringBuilder(2 + string.length() + string2.length()).append(string).append("(").append(string2).append(")").toString(); } } private static class InPredicate implements Predicate, Serializable { private final Collection target; private static final long serialVersionUID = 0L; private InPredicate(Collection target) { this.target = Preconditions.checkNotNull(target); } @Override public boolean apply(@Nullable T t) { try { return this.target.contains(t); } catch (NullPointerException e) { return false; } catch (ClassCastException e) { return false; } } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof InPredicate) { InPredicate that = (InPredicate)obj; return this.target.equals(that.target); } return false; } public int hashCode() { return this.target.hashCode(); } public String toString() { String string = String.valueOf(String.valueOf(this.target)); return new StringBuilder(15 + string.length()).append("Predicates.in(").append(string).append(")").toString(); } } @GwtIncompatible(value="Class.isAssignableFrom") private static class AssignableFromPredicate implements Predicate>, Serializable { private final Class clazz; private static final long serialVersionUID = 0L; private AssignableFromPredicate(Class clazz) { this.clazz = Preconditions.checkNotNull(clazz); } @Override public boolean apply(Class input) { return this.clazz.isAssignableFrom(input); } public int hashCode() { return this.clazz.hashCode(); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof AssignableFromPredicate) { AssignableFromPredicate that = (AssignableFromPredicate)obj; return this.clazz == that.clazz; } return false; } public String toString() { String string = String.valueOf(String.valueOf(this.clazz.getName())); return new StringBuilder(27 + string.length()).append("Predicates.assignableFrom(").append(string).append(")").toString(); } } @GwtIncompatible(value="Class.isInstance") private static class InstanceOfPredicate implements Predicate, Serializable { private final Class clazz; private static final long serialVersionUID = 0L; private InstanceOfPredicate(Class clazz) { this.clazz = Preconditions.checkNotNull(clazz); } @Override public boolean apply(@Nullable Object o) { return this.clazz.isInstance(o); } public int hashCode() { return this.clazz.hashCode(); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof InstanceOfPredicate) { InstanceOfPredicate that = (InstanceOfPredicate)obj; return this.clazz == that.clazz; } return false; } public String toString() { String string = String.valueOf(String.valueOf(this.clazz.getName())); return new StringBuilder(23 + string.length()).append("Predicates.instanceOf(").append(string).append(")").toString(); } } private static class IsEqualToPredicate implements Predicate, Serializable { private final T target; private static final long serialVersionUID = 0L; private IsEqualToPredicate(T target) { this.target = target; } @Override public boolean apply(T t) { return this.target.equals(t); } public int hashCode() { return this.target.hashCode(); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof IsEqualToPredicate) { IsEqualToPredicate that = (IsEqualToPredicate)obj; return this.target.equals(that.target); } return false; } public String toString() { String string = String.valueOf(String.valueOf(this.target)); return new StringBuilder(20 + string.length()).append("Predicates.equalTo(").append(string).append(")").toString(); } } private static class OrPredicate implements Predicate, Serializable { private final List> components; private static final long serialVersionUID = 0L; private OrPredicate(List> components) { this.components = components; } @Override public boolean apply(@Nullable T t) { for (int i = 0; i < this.components.size(); ++i) { if (!this.components.get(i).apply(t)) continue; return true; } return false; } public int hashCode() { return this.components.hashCode() + 87855567; } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof OrPredicate) { OrPredicate that = (OrPredicate)obj; return this.components.equals(that.components); } return false; } public String toString() { String string = String.valueOf(String.valueOf(COMMA_JOINER.join(this.components))); return new StringBuilder(15 + string.length()).append("Predicates.or(").append(string).append(")").toString(); } } private static class AndPredicate implements Predicate, Serializable { private final List> components; private static final long serialVersionUID = 0L; private AndPredicate(List> components) { this.components = components; } @Override public boolean apply(@Nullable T t) { for (int i = 0; i < this.components.size(); ++i) { if (this.components.get(i).apply(t)) continue; return false; } return true; } public int hashCode() { return this.components.hashCode() + 306654252; } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof AndPredicate) { AndPredicate that = (AndPredicate)obj; return this.components.equals(that.components); } return false; } public String toString() { String string = String.valueOf(String.valueOf(COMMA_JOINER.join(this.components))); return new StringBuilder(16 + string.length()).append("Predicates.and(").append(string).append(")").toString(); } } private static class NotPredicate implements Predicate, Serializable { final Predicate predicate; private static final long serialVersionUID = 0L; NotPredicate(Predicate predicate) { this.predicate = Preconditions.checkNotNull(predicate); } @Override public boolean apply(@Nullable T t) { return !this.predicate.apply(t); } public int hashCode() { return ~this.predicate.hashCode(); } @Override public boolean equals(@Nullable Object obj) { if (obj instanceof NotPredicate) { NotPredicate that = (NotPredicate)obj; return this.predicate.equals(that.predicate); } return false; } public String toString() { String string = String.valueOf(String.valueOf(this.predicate.toString())); return new StringBuilder(16 + string.length()).append("Predicates.not(").append(string).append(")").toString(); } } static enum ObjectPredicate implements Predicate { ALWAYS_TRUE{ @Override public boolean apply(@Nullable Object o) { return true; } public String toString() { return "Predicates.alwaysTrue()"; } } , ALWAYS_FALSE{ @Override public boolean apply(@Nullable Object o) { return false; } public String toString() { return "Predicates.alwaysFalse()"; } } , IS_NULL{ @Override public boolean apply(@Nullable Object o) { return o == null; } public String toString() { return "Predicates.isNull()"; } } , NOT_NULL{ @Override public boolean apply(@Nullable Object o) { return o != null; } public String toString() { return "Predicates.notNull()"; } }; Predicate withNarrowedType() { return this; } } }