Class PredicatedQueue<E>

  • Type Parameters:
    E - the type of elements held in this queue
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.Queue<E>

    public class PredicatedQueue<E>
    extends PredicatedCollection<E>
    implements java.util.Queue<E>
    Decorates another Queue to validate that additions match a specified predicate.

    This queue exists to provide validation for the decorated queue. It is normally created to decorate an empty queue. If an object cannot be added to the queue, an IllegalArgumentException is thrown.

    One usage would be to ensure that no null entries are added to the queue.

    Queue queue = PredicatedQueue.predicatedQueue(new UnboundedFifoQueue(), NotNullPredicate.INSTANCE);
    Since:
    4.0
    See Also:
    Serialized Form
    • Method Detail

      • predicatedQueue

        public static <E> PredicatedQueue<E> predicatedQueue​(java.util.Queue<E> Queue,
                                                             Predicate<? super E> predicate)
        Factory method to create a predicated (validating) queue.

        If there are any elements already in the queue being decorated, they are validated.

        Type Parameters:
        E - the type of the elements in the queue
        Parameters:
        Queue - the queue to decorate, must not be null
        predicate - the predicate to use for validation, must not be null
        Returns:
        a new predicated queue
        Throws:
        java.lang.NullPointerException - if queue or predicate is null
        java.lang.IllegalArgumentException - if the queue contains invalid elements
      • offer

        public boolean offer​(E object)
        Override to validate the object being added to ensure it matches the predicate.
        Specified by:
        offer in interface java.util.Queue<E>
        Parameters:
        object - the object being added
        Returns:
        the result of adding to the underlying queue
        Throws:
        java.lang.IllegalArgumentException - if the add is invalid
      • poll

        public E poll()
        Specified by:
        poll in interface java.util.Queue<E>
      • peek

        public E peek()
        Specified by:
        peek in interface java.util.Queue<E>
      • element

        public E element()
        Specified by:
        element in interface java.util.Queue<E>
      • remove

        public E remove()
        Specified by:
        remove in interface java.util.Queue<E>