/** * Gets the decorated queue. * * @return the decorated queue */ protected Queue<E> getQueue() { return (Queue<E>) decorated(); }
/** * Factory method to create a transforming queue that will transform * existing contents of the specified queue. * <p> * If there are any elements already in the queue being decorated, they * will be transformed by this method. * Contrast this with {@link #transformingQueue(Queue, Transformer)}. * * @param <E> the type of the elements in the queue * @param queue the queue to decorate, must not be null * @param transformer the transformer to use for conversion, must not be null * @return a new transformed Queue * @throws NullPointerException if queue or transformer is null * @since 4.0 */ public static <E> TransformedQueue<E> transformedQueue(final Queue<E> queue, final Transformer<? super E, ? extends E> transformer) { // throws IAE if queue or transformer is null final TransformedQueue<E> decorated = new TransformedQueue<>(queue, transformer); if (queue.size() > 0) { @SuppressWarnings("unchecked") // queue is type <E> final E[] values = (E[]) queue.toArray(); // NOPMD - false positive for generics queue.clear(); for (final E value : values) { decorated.decorated().add(transformer.transform(value)); } } return decorated; }