Class PredicatedQueue<E>

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

    public class PredicatedQueue<E>
    extends PredicatedCollection<E>
    implements 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
    • Constructor Detail

      • PredicatedQueue

        protected PredicatedQueue​(Queue<E> queue,
                                  Predicate<? super E> predicate)
        Constructor that wraps (not copies).

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

        Parameters:
        queue - the queue to decorate, must not be null
        predicate - the predicate to use for validation, must not be null
        Throws:
        NullPointerException - if queue or predicate is null
        IllegalArgumentException - if the Queue contains invalid elements
    • Method Detail

      • predicatedQueue

        public static <E> PredicatedQueue<E> predicatedQueue​(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:
        NullPointerException - if queue or predicate is null
        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 Queue<E>
        Parameters:
        object - the object being added
        Returns:
        the result of adding to the underlying queue
        Throws:
        IllegalArgumentException - if the add is invalid
      • poll

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

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

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

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