[COLLECTIONS-231] return specific type rather than base type in factory methods, javadoc cleanup.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@1353139 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Thomas Neidhart 2012-06-23 15:05:20 +00:00
parent 902ee25dcf
commit 44709d8b2a
8 changed files with 62 additions and 14 deletions

View File

@ -65,10 +65,17 @@ public abstract class AbstractBufferDecorator<E> extends AbstractCollectionDecor
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/**
* {@inheritDoc}
*/
public E get() { public E get() {
return decorated().get(); return decorated().get();
} }
/**
* {@inheritDoc}
*/
public E remove() { public E remove() {
return decorated().remove(); return decorated().remove();
} }

View File

@ -59,26 +59,27 @@ public class BlockingBuffer<E> extends SynchronizedBuffer<E> {
/** /**
* Factory method to create a blocking buffer. * Factory method to create a blocking buffer.
* *
* @param <T> the type of the elements in the buffer * @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @return a new blocking Buffer * @return a new blocking Buffer
* @throws IllegalArgumentException if buffer is null * @throws IllegalArgumentException if buffer is null
*/ */
public static <T> Buffer<T> blockingBuffer(Buffer<T> buffer) { public static <E> BlockingBuffer<E> blockingBuffer(Buffer<E> buffer) {
return new BlockingBuffer<T>(buffer); return new BlockingBuffer<E>(buffer);
} }
/** /**
* Factory method to create a blocking buffer with a timeout value. * Factory method to create a blocking buffer with a timeout value.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param timeoutMillis the timeout value in milliseconds, zero or less for no timeout * @param timeoutMillis the timeout value in milliseconds, zero or less for no timeout
* @return a new blocking buffer * @return a new blocking buffer
* @throws IllegalArgumentException if the buffer is null * @throws IllegalArgumentException if the buffer is null
* @since Commons Collections 3.2 * @since Commons Collections 3.2
*/ */
public static <T> Buffer<T> blockingBuffer(Buffer<T> buffer, long timeoutMillis) { public static <E> BlockingBuffer<E> blockingBuffer(Buffer<E> buffer, long timeoutMillis) {
return new BlockingBuffer<T>(buffer, timeoutMillis); return new BlockingBuffer<E>(buffer, timeoutMillis);
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -131,6 +132,7 @@ public class BlockingBuffer<E> extends SynchronizedBuffer<E> {
* set in the constructor. * set in the constructor.
* *
* @throws BufferUnderflowException if an interrupt is received * @throws BufferUnderflowException if an interrupt is received
* {@inheritDoc}
*/ */
@Override @Override
public E get() { public E get() {
@ -157,6 +159,7 @@ public class BlockingBuffer<E> extends SynchronizedBuffer<E> {
* added for up to the specified timeout value if the buffer is empty. * added for up to the specified timeout value if the buffer is empty.
* *
* @param timeout the timeout value in milliseconds * @param timeout the timeout value in milliseconds
* @return the next object in the buffer
* @throws BufferUnderflowException if an interrupt is received * @throws BufferUnderflowException if an interrupt is received
* @throws BufferUnderflowException if the timeout expires * @throws BufferUnderflowException if the timeout expires
* @since Commons Collections 3.2 * @since Commons Collections 3.2
@ -188,6 +191,7 @@ public class BlockingBuffer<E> extends SynchronizedBuffer<E> {
* set in the constructor. * set in the constructor.
* *
* @throws BufferUnderflowException if an interrupt is received * @throws BufferUnderflowException if an interrupt is received
* {@inheritDoc}
*/ */
@Override @Override
public E remove() { public E remove() {
@ -214,6 +218,7 @@ public class BlockingBuffer<E> extends SynchronizedBuffer<E> {
* added for up to the specified timeout value if the buffer is empty. * added for up to the specified timeout value if the buffer is empty.
* *
* @param timeout the timeout value in milliseconds * @param timeout the timeout value in milliseconds
* @return the next object in the buffer, which is also removed
* @throws BufferUnderflowException if an interrupt is received * @throws BufferUnderflowException if an interrupt is received
* @throws BufferUnderflowException if the timeout expires * @throws BufferUnderflowException if the timeout expires
* @since Commons Collections 3.2 * @since Commons Collections 3.2

View File

@ -61,6 +61,7 @@ public class BoundedBuffer<E> extends SynchronizedBuffer<E> implements BoundedCo
* When the buffer is full, it will immediately throw a * When the buffer is full, it will immediately throw a
* <code>BufferOverflowException</code> on calling <code>add()</code>. * <code>BufferOverflowException</code> on calling <code>add()</code>.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param maximumSize the maximum size, must be size one or greater * @param maximumSize the maximum size, must be size one or greater
* @return a new bounded buffer * @return a new bounded buffer
@ -75,6 +76,7 @@ public class BoundedBuffer<E> extends SynchronizedBuffer<E> implements BoundedCo
* Factory method to create a bounded buffer that blocks for a maximum * Factory method to create a bounded buffer that blocks for a maximum
* amount of time. * amount of time.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param maximumSize the maximum size, must be size one or greater * @param maximumSize the maximum size, must be size one or greater
* @param timeout the maximum amount of time to wait in milliseconds * @param timeout the maximum amount of time to wait in milliseconds
@ -169,11 +171,17 @@ public class BoundedBuffer<E> extends SynchronizedBuffer<E> implements BoundedCo
} }
} }
/**
* {@inheritDoc}
*/
public boolean isFull() { public boolean isFull() {
// size() is synchronized // size() is synchronized
return (size() == maxSize()); return (size() == maxSize());
} }
/**
* {@inheritDoc}
*/
public int maxSize() { public int maxSize() {
return maximumSize; return maximumSize;
} }

View File

@ -50,14 +50,15 @@ public class PredicatedBuffer<E> extends PredicatedCollection<E> implements Buff
* If there are any elements already in the buffer being decorated, they * If there are any elements already in the buffer being decorated, they
* are validated. * are validated.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param predicate the predicate to use for validation, must not be null * @param predicate the predicate to use for validation, must not be null
* @return a new predicated Buffer * @return a new predicated Buffer
* @throws IllegalArgumentException if buffer or predicate is null * @throws IllegalArgumentException if buffer or predicate is null
* @throws IllegalArgumentException if the buffer contains invalid elements * @throws IllegalArgumentException if the buffer contains invalid elements
*/ */
public static <T> Buffer<T> predicatedBuffer(Buffer<T> buffer, Predicate<? super T> predicate) { public static <E> PredicatedBuffer<E> predicatedBuffer(Buffer<E> buffer, Predicate<? super E> predicate) {
return new PredicatedBuffer<T>(buffer, predicate); return new PredicatedBuffer<E>(buffer, predicate);
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -87,10 +88,17 @@ public class PredicatedBuffer<E> extends PredicatedCollection<E> implements Buff
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/**
* {@inheritDoc}
*/
public E get() { public E get() {
return decorated().get(); return decorated().get();
} }
/**
* {@inheritDoc}
*/
public E remove() { public E remove() {
return decorated().remove(); return decorated().remove();
} }

View File

@ -43,13 +43,13 @@ public class SynchronizedBuffer<E>
/** /**
* Factory method to create a synchronized buffer. * Factory method to create a synchronized buffer.
* *
* @param <T> the type of the elements in the buffer * @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @return a new synchronized Buffer * @return a new synchronized Buffer
* @throws IllegalArgumentException if buffer is null * @throws IllegalArgumentException if buffer is null
*/ */
public static <T> Buffer<T> synchronizedBuffer(Buffer<T> buffer) { public static <E> SynchronizedBuffer<E> synchronizedBuffer(Buffer<E> buffer) {
return new SynchronizedBuffer<T>(buffer); return new SynchronizedBuffer<E>(buffer);
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -85,12 +85,19 @@ public class SynchronizedBuffer<E>
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/**
* {@inheritDoc}
*/
public E get() { public E get() {
synchronized (lock) { synchronized (lock) {
return decorated().get(); return decorated().get();
} }
} }
/**
* {@inheritDoc}
*/
public E remove() { public E remove() {
synchronized (lock) { synchronized (lock) {
return decorated().remove(); return decorated().remove();

View File

@ -47,12 +47,14 @@ public class TransformedBuffer<E> extends TransformedCollection<E> implements Bu
* are NOT transformed. * are NOT transformed.
* Contrast this with {@link #transformedBuffer(Buffer, Transformer)}. * Contrast this with {@link #transformedBuffer(Buffer, Transformer)}.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param transformer the transformer to use for conversion, must not be null * @param transformer the transformer to use for conversion, must not be null
* @return a new transformed Buffer * @return a new transformed Buffer
* @throws IllegalArgumentException if buffer or transformer is null * @throws IllegalArgumentException if buffer or transformer is null
*/ */
public static <E> Buffer<E> transformingBuffer(Buffer<E> buffer, Transformer<? super E, ? extends E> transformer) { public static <E> TransformedBuffer<E> transformingBuffer(Buffer<E> buffer,
Transformer<? super E, ? extends E> transformer) {
return new TransformedBuffer<E>(buffer, transformer); return new TransformedBuffer<E>(buffer, transformer);
} }
@ -64,14 +66,17 @@ public class TransformedBuffer<E> extends TransformedCollection<E> implements Bu
* will be transformed by this method. * will be transformed by this method.
* Contrast this with {@link #transformingBuffer(Buffer, Transformer)}. * Contrast this with {@link #transformingBuffer(Buffer, Transformer)}.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @param transformer the transformer to use for conversion, must not be null * @param transformer the transformer to use for conversion, must not be null
* @return a new transformed Buffer * @return a new transformed Buffer
* @throws IllegalArgumentException if buffer or transformer is null * @throws IllegalArgumentException if buffer or transformer is null
* @since Commons Collections 3.3 * @since Commons Collections 3.3
*/ */
public static <E> Buffer<E> transformedBuffer(Buffer<E> buffer, Transformer<? super E, ? extends E> transformer) { public static <E> TransformedBuffer<E> transformedBuffer(Buffer<E> buffer,
TransformedBuffer<E> decorated = new TransformedBuffer<E>(buffer, transformer); // throws IAE if buffer or transformer is null Transformer<? super E, ? extends E> transformer) {
// throws IAE if buffer or transformer is null
final TransformedBuffer<E> decorated = new TransformedBuffer<E>(buffer, transformer);
if (buffer.size() > 0) { if (buffer.size() > 0) {
@SuppressWarnings("unchecked") // buffer is type <E> @SuppressWarnings("unchecked") // buffer is type <E>
E[] values = (E[]) buffer.toArray(); E[] values = (E[]) buffer.toArray();
@ -108,10 +113,17 @@ public class TransformedBuffer<E> extends TransformedCollection<E> implements Bu
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/**
* {@inheritDoc}
*/
public E get() { public E get() {
return getBuffer().get(); return getBuffer().get();
} }
/**
* {@inheritDoc}
*/
public E remove() { public E remove() {
return getBuffer().remove(); return getBuffer().remove();
} }

View File

@ -67,7 +67,7 @@ public class UnboundedFifoBuffer<E> extends AbstractCollection<E> implements Buf
// invariant: buffer.length > size() // invariant: buffer.length > size()
// ie.buffer always has at least one empty entry // ie.buffer always has at least one empty entry
/** Serialization vesrion */ /** Serialization version */
private static final long serialVersionUID = -3482960336579541419L; private static final long serialVersionUID = -3482960336579541419L;
/** The array of objects in the buffer. */ /** The array of objects in the buffer. */

View File

@ -51,6 +51,7 @@ public final class UnmodifiableBuffer<E>
* <p> * <p>
* If the buffer passed in is already unmodifiable, it is returned. * If the buffer passed in is already unmodifiable, it is returned.
* *
* @param <E> the type of the elements in the buffer
* @param buffer the buffer to decorate, must not be null * @param buffer the buffer to decorate, must not be null
* @return an unmodifiable Buffer * @return an unmodifiable Buffer
* @throws IllegalArgumentException if buffer is null * @throws IllegalArgumentException if buffer is null