You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2009/09/15 07:54:51 UTC
svn commit: r815040 -
/commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java
Author: bayard
Date: Tue Sep 15 05:54:51 2009
New Revision: 815040
URL: http://svn.apache.org/viewvc?rev=815040&view=rev
Log:
Merging from -r468106:814127 of collections_jdk5_branch - namely where this code was generified; mostly in r738956.
Also see the following revisions:
------------------------------------------------------------------------
r471575 | scolebourne | 2006-11-05 15:58:08 -0800 (Sun, 05 Nov 2006) | 1 line
Generify and remove AbstractSerializableCollectionDecorator
------------------------------------------------------------------------
r471202 | scolebourne | 2006-11-04 06:21:44 -0800 (Sat, 04 Nov 2006) | 1 line
Remove getCollection() - use covariant decorated()
------------------------------------------------------------------------
Modified:
commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java
Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java?rev=815040&r1=815039&r2=815040&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java (original)
+++ commons/proper/collections/trunk/src/java/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java Tue Sep 15 05:54:51 2009
@@ -23,11 +23,11 @@
import org.apache.commons.collections.iterators.UnmodifiableIterator;
/**
- * <code>UnmodifiableBoundedCollection</code> decorates another
+ * <code>UnmodifiableBoundedCollection</code> decorates another
* <code>BoundedCollection</code> to ensure it can't be altered.
* <p>
* If a BoundedCollection is first wrapped in some other collection decorator,
- * such as synchronized or predicated, the BoundedCollection methods are no
+ * such as synchronized or predicated, the BoundedCollection methods are no
* longer accessible.
* The factory on this class will attempt to retrieve the bounded nature by
* examining the package scope variables.
@@ -41,78 +41,77 @@
*
* @author Stephen Colebourne
*/
-public final class UnmodifiableBoundedCollection
- extends AbstractSerializableCollectionDecorator
- implements BoundedCollection {
+public final class UnmodifiableBoundedCollection<E> extends AbstractCollectionDecorator<E>
+ implements BoundedCollection<E> {
/** Serialization version */
private static final long serialVersionUID = -7112672385450340330L;
/**
* Factory method to create an unmodifiable bounded collection.
- *
+ *
* @param coll the <code>BoundedCollection</code> to decorate, must not be null
* @return a new unmodifiable bounded collection
* @throws IllegalArgumentException if bag is null
*/
- public static BoundedCollection decorate(BoundedCollection coll) {
- return new UnmodifiableBoundedCollection(coll);
+ public static <E> BoundedCollection<E> decorate(BoundedCollection<E> coll) {
+ return new UnmodifiableBoundedCollection<E>(coll);
}
-
+
/**
* Factory method to create an unmodifiable bounded collection.
* <p>
- * This method is capable of drilling down through up to 1000 other decorators
+ * This method is capable of drilling down through up to 1000 other decorators
* to find a suitable BoundedCollection.
- *
+ *
* @param coll the <code>BoundedCollection</code> to decorate, must not be null
* @return a new unmodifiable bounded collection
* @throws IllegalArgumentException if bag is null
*/
- public static BoundedCollection decorateUsing(Collection coll) {
+ @SuppressWarnings("unchecked")
+ public static <E> BoundedCollection<E> decorateUsing(Collection<? super E> coll) {
if (coll == null) {
throw new IllegalArgumentException("The collection must not be null");
}
-
+
// handle decorators
for (int i = 0; i < 1000; i++) { // counter to prevent infinite looping
if (coll instanceof BoundedCollection) {
break; // normal loop exit
- } else if (coll instanceof AbstractCollectionDecorator) {
- coll = ((AbstractCollectionDecorator) coll).collection;
+ }
+ if (coll instanceof AbstractCollectionDecorator) {
+ coll = ((AbstractCollectionDecorator<E>) coll).collection;
} else if (coll instanceof SynchronizedCollection) {
- coll = ((SynchronizedCollection) coll).collection;
- } else {
- break; // normal loop exit
+ coll = ((SynchronizedCollection<E>) coll).collection;
}
}
-
+
if (coll instanceof BoundedCollection == false) {
throw new IllegalArgumentException("The collection is not a bounded collection");
}
- return new UnmodifiableBoundedCollection((BoundedCollection) coll);
- }
-
+ return new UnmodifiableBoundedCollection((BoundedCollection<E>) coll);
+ }
+
/**
* Constructor that wraps (not copies).
- *
+ *
* @param coll the collection to decorate, must not be null
* @throws IllegalArgumentException if coll is null
*/
- private UnmodifiableBoundedCollection(BoundedCollection coll) {
+ private UnmodifiableBoundedCollection(BoundedCollection<E> coll) {
super(coll);
}
//-----------------------------------------------------------------------
- public Iterator iterator() {
- return UnmodifiableIterator.decorate(getCollection().iterator());
+ public Iterator<E> iterator() {
+ return UnmodifiableIterator.decorate(decorated().iterator());
}
- public boolean add(Object object) {
+ public boolean add(E object) {
throw new UnsupportedOperationException();
}
- public boolean addAll(Collection coll) {
+ public boolean addAll(Collection<? extends E> coll) {
throw new UnsupportedOperationException();
}
@@ -124,21 +123,28 @@
throw new UnsupportedOperationException();
}
- public boolean removeAll(Collection coll) {
+ public boolean removeAll(Collection<?> coll) {
throw new UnsupportedOperationException();
}
- public boolean retainAll(Collection coll) {
+ public boolean retainAll(Collection<?> coll) {
throw new UnsupportedOperationException();
}
- //-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public boolean isFull() {
- return ((BoundedCollection) collection).isFull();
+ return decorated().isFull();
}
public int maxSize() {
- return ((BoundedCollection) collection).maxSize();
+ return decorated().maxSize();
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected BoundedCollection<E> decorated() {
+ return (BoundedCollection<E>) super.decorated();
+ }
}