Browse Source

Implement serializable predicate helper methods (#10952)

tags/8.5.0.alpha2
Ilia Motornyi 5 years ago
parent
commit
080fcba26a
1 changed files with 81 additions and 1 deletions
  1. 81
    1
      server/src/main/java/com/vaadin/server/SerializablePredicate.java

+ 81
- 1
server/src/main/java/com/vaadin/server/SerializablePredicate.java View File

@@ -16,6 +16,7 @@
package com.vaadin.server;

import java.io.Serializable;
import java.util.Objects;
import java.util.function.Predicate;

/**
@@ -28,5 +29,84 @@ import java.util.function.Predicate;
*
*/
public interface SerializablePredicate<T> extends Predicate<T>, Serializable {
// Only method inherited from Predicate
/**
* Returns a composed predicate that represents a short-circuiting logical
* AND of this predicate and another. When evaluating the composed
* predicate, if this predicate is {@code false}, then the {@code other}
* predicate is not evaluated.
*
* <p>
* Any exceptions thrown during evaluation of either predicate are relayed
* to the caller; if evaluation of this predicate throws an exception, the
* {@code other} predicate will not be evaluated.
*
* @param other
* a predicate that will be logically-ANDed with this predicate
* @return a composed predicate that represents the short-circuiting logical
* AND of this predicate and the {@code other} predicate
* @throws NullPointerException
* if other is null
* @since
*/
default SerializablePredicate<T> and(
SerializablePredicate<? super T> other) {
Objects.requireNonNull(other);
return t -> test(t) && other.test(t);
}

/**
* Returns a predicate that represents the logical negation of this
* predicate.
*
* @return a predicate that represents the logical negation of this
* predicate
* @since
*/
default SerializablePredicate<T> negate() {
return t -> !test(t);
}

/**
* Returns a composed predicate that represents a short-circuiting logical
* OR of this predicate and another. When evaluating the composed predicate,
* if this predicate is {@code true}, then the {@code other} predicate is
* not evaluated.
*
* <p>
* Any exceptions thrown during evaluation of either predicate are relayed
* to the caller; if evaluation of this predicate throws an exception, the
* {@code other} predicate will not be evaluated.
*
* @param other
* a predicate that will be logically-ORed with this predicate
* @return a composed predicate that represents the short-circuiting logical
* OR of this predicate and the {@code other} predicate
* @throws NullPointerException
* if other is null
* @since
*/
default SerializablePredicate<T> or(
SerializablePredicate<? super T> other) {
Objects.requireNonNull(other);
return t -> test(t) || other.test(t);
}

/**
* Returns a predicate that tests if two arguments are equal according to
* {@link Objects#equals(Object, Object)}.
*
* @param <T>
* the type of arguments to the predicate
* @param targetRef
* the object reference with which to compare for equality, which
* may be {@code null}
* @return a predicate that tests if two arguments are equal according to
* {@link Objects#equals(Object, Object)}
* @since
*/
static <T> SerializablePredicate<T> isEqual(Serializable targetRef) {
return (null == targetRef) ? Objects::isNull
: object -> targetRef.equals(object);
}

}

Loading…
Cancel
Save