You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2003/05/07 13:20:22 UTC
cvs commit: jakarta-commons/collections/src/java/org/apache/commons/collections/decorators TypedList.java AbstractListIteratorDecorator.java SynchronizedCollection.java PredicatedList.java PredicatedCollection.java AbstractListDecorator.java UnmodifiableCollection.java SynchronizedList.java LazyList.java AbstractCollectionDecorator.java UnmodifiableList.java FixedSizeList.java
scolebourne 2003/05/07 04:20:22
Modified: collections/src/java/org/apache/commons/collections/decorators
TypedList.java AbstractListIteratorDecorator.java
SynchronizedCollection.java PredicatedList.java
PredicatedCollection.java
AbstractListDecorator.java
UnmodifiableCollection.java SynchronizedList.java
LazyList.java AbstractCollectionDecorator.java
UnmodifiableList.java FixedSizeList.java
Log:
Tidy imports, javadoc and field access
Revision Changes Path
1.2 +5 -5 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/TypedList.java
Index: TypedList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/TypedList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TypedList.java 29 Apr 2003 18:43:47 -0000 1.1
+++ TypedList.java 7 May 2003 11:20:21 -0000 1.2
@@ -76,9 +76,9 @@
public class TypedList extends PredicatedList {
/**
- * Factory method to create a typed collection.
+ * Factory method to create a typed list.
* <p>
- * If there are any elements already in the collection being decorated, they
+ * If there are any elements already in the list being decorated, they
* are validated.
*
* @param list the list to decorate, must not be null
@@ -93,7 +93,7 @@
/**
* Constructor that wraps (not copies).
* <p>
- * If there are any elements already in the collection being decorated, they
+ * If there are any elements already in the list being decorated, they
* are validated.
*
* @param list the list to decorate, must not be null
1.3 +13 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractListIteratorDecorator.java
Index: AbstractListIteratorDecorator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractListIteratorDecorator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractListIteratorDecorator.java 5 May 2003 23:25:22 -0000 1.2
+++ AbstractListIteratorDecorator.java 7 May 2003 11:20:21 -0000 1.3
@@ -77,7 +77,7 @@
public abstract class AbstractListIteratorDecorator implements ListIterator {
/** The iterator to delegate to */
- protected final ListIterator iterator;
+ private final ListIterator iterator;
/**
* Constructor that wraps the specified iterator.
@@ -87,7 +87,17 @@
public AbstractListIteratorDecorator(ListIterator iterator) {
this.iterator = iterator;
}
+
+ /**
+ * Gets the decorated iterator.
+ *
+ * @return the decorated iterator
+ */
+ protected ListIterator getIterator() {
+ return iterator;
+ }
+ //-----------------------------------------------------------------------
public boolean hasNext() {
return iterator.hasNext();
}
1.2 +83 -34 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/SynchronizedCollection.java
Index: SynchronizedCollection.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/SynchronizedCollection.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SynchronizedCollection.java 29 Apr 2003 18:43:47 -0000 1.1
+++ SynchronizedCollection.java 7 May 2003 11:20:21 -0000 1.2
@@ -80,6 +80,8 @@
/** The collection to decorate */
protected final Collection collection;
+ /** The object to lock on, needed for List/SortedSet views */
+ protected final Object lock;
/**
* Factory method to create a synchronized collection.
@@ -102,30 +104,59 @@
throw new IllegalArgumentException("Collection must not be null");
}
this.collection = collection;
+ this.lock = this;
}
- public synchronized boolean add(Object object) {
- return collection.add(object);
+ /**
+ * Constructor that wraps (not copies).
+ *
+ * @param coll the collection to decorate, must not be null
+ * @param lock the lock object to use, must not be null
+ * @throws IllegalArgumentException if the collection is null
+ */
+ protected SynchronizedCollection(Collection collection, Object lock) {
+ if (collection == null) {
+ throw new IllegalArgumentException("Collection must not be null");
+ }
+ this.collection = collection;
+ this.lock = lock;
+ }
+
+ //-----------------------------------------------------------------------
+ public boolean add(Object object) {
+ synchronized (lock) {
+ return collection.add(object);
+ }
}
- public synchronized boolean addAll(Collection coll) {
- return collection.addAll(coll);
+ public boolean addAll(Collection coll) {
+ synchronized (lock) {
+ return collection.addAll(coll);
+ }
}
- public synchronized void clear() {
- collection.clear();
+ public void clear() {
+ synchronized (lock) {
+ collection.clear();
+ }
}
- public synchronized boolean contains(Object object) {
- return collection.contains(object);
+ public boolean contains(Object object) {
+ synchronized (lock) {
+ return collection.contains(object);
+ }
}
- public synchronized boolean containsAll(Collection coll) {
- return collection.containsAll(coll);
+ public boolean containsAll(Collection coll) {
+ synchronized (lock) {
+ return collection.containsAll(coll);
+ }
}
- public synchronized boolean isEmpty() {
- return collection.isEmpty();
+ public boolean isEmpty() {
+ synchronized (lock) {
+ return collection.isEmpty();
+ }
}
/**
@@ -142,43 +173,61 @@
return collection.iterator();
}
- public synchronized Object[] toArray() {
- return collection.toArray();
+ public Object[] toArray() {
+ synchronized (lock) {
+ return collection.toArray();
+ }
}
- public synchronized Object[] toArray(Object[] object) {
- return collection.toArray(object);
+ public Object[] toArray(Object[] object) {
+ synchronized (lock) {
+ return collection.toArray(object);
+ }
}
- public synchronized boolean remove(Object object) {
- return collection.remove(object);
+ public boolean remove(Object object) {
+ synchronized (lock) {
+ return collection.remove(object);
+ }
}
- public synchronized boolean removeAll(Collection coll) {
- return collection.removeAll(coll);
+ public boolean removeAll(Collection coll) {
+ synchronized (lock) {
+ return collection.removeAll(coll);
+ }
}
- public synchronized boolean retainAll(Collection coll) {
- return collection.retainAll(coll);
+ public boolean retainAll(Collection coll) {
+ synchronized (lock) {
+ return collection.retainAll(coll);
+ }
}
- public synchronized int size() {
- return collection.size();
+ public int size() {
+ synchronized (lock) {
+ return collection.size();
+ }
}
- public synchronized boolean equals(Object object) {
- if (object == this) {
- return true;
+ public boolean equals(Object object) {
+ synchronized (lock) {
+ if (object == this) {
+ return true;
+ }
+ return collection.equals(object);
}
- return collection.equals(object);
}
- public synchronized int hashCode() {
- return collection.hashCode();
+ public int hashCode() {
+ synchronized (lock) {
+ return collection.hashCode();
+ }
}
- public synchronized String toString() {
- return collection.toString();
+ public String toString() {
+ synchronized (lock) {
+ return collection.toString();
+ }
}
}
1.2 +20 -14 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/PredicatedList.java
Index: PredicatedList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/PredicatedList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PredicatedList.java 29 Apr 2003 18:43:47 -0000 1.1
+++ PredicatedList.java 7 May 2003 11:20:21 -0000 1.2
@@ -80,15 +80,15 @@
public class PredicatedList extends PredicatedCollection implements List {
/**
- * Factory method to create a predicated (validating) collection.
+ * Factory method to create a predicated (validating) list.
* <p>
* If there are any elements already in the list being decorated, they
* are validated.
*
- * @param coll the collection to decorate, must not be null
+ * @param list the list to decorate, must not be null
* @param predicate the predicate to use for validation, must not be null
- * @throws IllegalArgumentException if collection or predicate is null
- * @throws IllegalArgumentException if the collection contains invalid elements
+ * @throws IllegalArgumentException if list or predicate is null
+ * @throws IllegalArgumentException if the list contains invalid elements
*/
public static List decorate(List list, Predicate predicate) {
return new PredicatedList(list, predicate);
@@ -102,13 +102,23 @@
*
* @param list the list to decorate, must not be null
* @param predicate the predicate to use for validation, must not be null
- * @throws IllegalArgumentException if collection or predicate is null
- * @throws IllegalArgumentException if the collection contains invalid elements
+ * @throws IllegalArgumentException if list or predicate is null
+ * @throws IllegalArgumentException if the list contains invalid elements
*/
protected PredicatedList(List list, Predicate predicate) {
super(list, predicate);
}
+ /**
+ * Gets the list being decorated.
+ *
+ * @return the decorated list
+ */
+ protected List getList() {
+ return (List) getCollection();
+ }
+
+ //-----------------------------------------------------------------------
public void add(int index, Object object) {
validate(object);
getList().add(index, object);
@@ -141,12 +151,12 @@
return new AbstractListIteratorDecorator(getList().listIterator(i)) {
public void add(Object object) {
validate(object);
- iterator.add(object);
+ getIterator().add(object);
}
public void set(Object object) {
validate(object);
- iterator.set(object);
+ getIterator().set(object);
}
};
}
@@ -163,10 +173,6 @@
public List subList(int fromIndex, int toIndex) {
List sub = getList().subList(fromIndex, toIndex);
return new PredicatedList(sub, predicate);
- }
-
- protected List getList() {
- return (List) collection;
}
}
1.2 +5 -4 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/PredicatedCollection.java
Index: PredicatedCollection.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/PredicatedCollection.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PredicatedCollection.java 29 Apr 2003 18:43:47 -0000 1.1
+++ PredicatedCollection.java 7 May 2003 11:20:21 -0000 1.2
@@ -117,6 +117,7 @@
}
}
+ //-----------------------------------------------------------------------
/**
* Override to validate the object being added to ensure it matches
* the predicate.
@@ -127,7 +128,7 @@
*/
public boolean add(Object object) {
validate(object);
- return collection.add(object);
+ return getCollection().add(object);
}
/**
@@ -143,7 +144,7 @@
for (Iterator it = coll.iterator(); it.hasNext(); ) {
validate(it.next());
}
- return collection.addAll(coll);
+ return getCollection().addAll(coll);
}
/**
1.3 +12 -6 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractListDecorator.java
Index: AbstractListDecorator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractListDecorator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractListDecorator.java 5 May 2003 23:25:22 -0000 1.2
+++ AbstractListDecorator.java 7 May 2003 11:20:21 -0000 1.3
@@ -83,6 +83,16 @@
super(list);
}
+ /**
+ * Gets the list being decorated.
+ *
+ * @return the decorated list
+ */
+ protected List getList() {
+ return (List) getCollection();
+ }
+
+ //-----------------------------------------------------------------------
public void add(int index, Object object) {
getList().add(index, object);
}
@@ -121,10 +131,6 @@
public List subList(int fromIndex, int toIndex) {
return getList().subList(fromIndex, toIndex);
- }
-
- protected List getList() {
- return (List) collection;
}
}
1.3 +4 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/UnmodifiableCollection.java
Index: UnmodifiableCollection.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/UnmodifiableCollection.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UnmodifiableCollection.java 5 May 2003 23:25:22 -0000 1.2
+++ UnmodifiableCollection.java 7 May 2003 11:20:21 -0000 1.3
@@ -96,6 +96,7 @@
super(coll);
}
+ //-----------------------------------------------------------------------
/**
* Override as method unsupported.
* @throws UnsupportedOperationException
@@ -126,7 +127,7 @@
* @return unmodifiable iterator
*/
public Iterator iterator() {
- return IteratorUtils.unmodifiableIterator(collection.iterator());
+ return IteratorUtils.unmodifiableIterator(getCollection().iterator());
}
/**
1.3 +63 -27 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/SynchronizedList.java
Index: SynchronizedList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/SynchronizedList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SynchronizedList.java 5 May 2003 23:25:22 -0000 1.2
+++ SynchronizedList.java 7 May 2003 11:20:21 -0000 1.3
@@ -77,7 +77,7 @@
* Factory method to create a synchronized list.
*
* @param list the list to decorate, must not be null
- * @throws IllegalArgumentException if collection is null
+ * @throws IllegalArgumentException if list is null
*/
public static List decorate(List list) {
return new SynchronizedList(list);
@@ -93,24 +93,55 @@
super(list);
}
- public synchronized void add(int index, Object object) {
- getList().add(index, object);
+ /**
+ * Constructor that wraps (not copies).
+ *
+ * @param list the list to decorate, must not be null
+ * @param lock the lock to use, must not be null
+ * @throws IllegalArgumentException if list is null
+ */
+ protected SynchronizedList(List list, Object lock) {
+ super(list, lock);
+ }
+
+ /**
+ * Gets the decorated list.
+ *
+ * @return the decorated list
+ */
+ protected List getList() {
+ return (List) collection;
+ }
+
+ //-----------------------------------------------------------------------
+ public void add(int index, Object object) {
+ synchronized (lock) {
+ getList().add(index, object);
+ }
}
- public synchronized boolean addAll(int index, Collection coll) {
- return getList().addAll(index, coll);
+ public boolean addAll(int index, Collection coll) {
+ synchronized (lock) {
+ return getList().addAll(index, coll);
+ }
}
- public synchronized Object get(int index) {
- return getList().get(index);
+ public Object get(int index) {
+ synchronized (lock) {
+ return getList().get(index);
+ }
}
- public synchronized int indexOf(Object object) {
- return getList().indexOf(object);
+ public int indexOf(Object object) {
+ synchronized (lock) {
+ return getList().indexOf(object);
+ }
}
- public synchronized int lastIndexOf(Object object) {
- return getList().lastIndexOf(object);
+ public int lastIndexOf(Object object) {
+ synchronized (lock) {
+ return getList().lastIndexOf(object);
+ }
}
/**
@@ -141,20 +172,25 @@
return getList().listIterator(index);
}
- public synchronized Object remove(int index) {
- return getList().remove(index);
- }
-
- public synchronized Object set(int index, Object object) {
- return getList().set(index, object);
- }
-
- public synchronized List subList(int fromIndex, int toIndex) {
- return getList().subList(fromIndex, toIndex);
- }
-
- protected List getList() {
- return (List) collection;
+ public Object remove(int index) {
+ synchronized (lock) {
+ return getList().remove(index);
+ }
+ }
+
+ public Object set(int index, Object object) {
+ synchronized (lock) {
+ return getList().set(index, object);
+ }
+ }
+
+ public List subList(int fromIndex, int toIndex) {
+ synchronized (lock) {
+ List list = getList().subList(fromIndex, toIndex);
+ // the lock is passed into the constructor here to ensure that the sublist is
+ // synchronized on the same lock as the parent list
+ return new SynchronizedList(list, lock);
+ }
}
}
1.2 +3 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/LazyList.java
Index: LazyList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/LazyList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LazyList.java 29 Apr 2003 18:43:47 -0000 1.1
+++ LazyList.java 7 May 2003 11:20:21 -0000 1.2
@@ -127,7 +127,7 @@
this.factory = factory;
}
-
+ //-----------------------------------------------------------------------
/**
* Decorate the get method to perform the lazy behaviour.
* <p>
1.2 +13 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractCollectionDecorator.java
Index: AbstractCollectionDecorator.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/AbstractCollectionDecorator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractCollectionDecorator.java 29 Apr 2003 18:43:47 -0000 1.1
+++ AbstractCollectionDecorator.java 7 May 2003 11:20:21 -0000 1.2
@@ -85,7 +85,7 @@
public abstract class AbstractCollectionDecorator implements Collection {
/** The collection being decorated */
- protected final Collection collection;
+ private final Collection collection;
/**
* Constructor that wraps (not copies).
@@ -100,6 +100,16 @@
this.collection = coll;
}
+ /**
+ * Gets the collection being decorated.
+ *
+ * @return the decorated collection
+ */
+ protected Collection getCollection() {
+ return collection;
+ }
+
+ //-----------------------------------------------------------------------
public boolean add(Object object) {
return collection.add(object);
}
1.3 +12 -6 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/UnmodifiableList.java
Index: UnmodifiableList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/UnmodifiableList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- UnmodifiableList.java 5 May 2003 23:25:22 -0000 1.2
+++ UnmodifiableList.java 7 May 2003 11:20:21 -0000 1.3
@@ -94,6 +94,16 @@
super(list);
}
+ /**
+ * Gets the list being decorated.
+ *
+ * @return the decorated list
+ */
+ protected List getList() {
+ return (List) getCollection();
+ }
+
+ //-----------------------------------------------------------------------
public void add(int index, Object object) {
throw new UnsupportedOperationException();
}
@@ -133,10 +143,6 @@
public List subList(int fromIndex, int toIndex) {
List sub = getList().subList(fromIndex, toIndex);
return new UnmodifiableList(sub);
- }
-
- protected List getList() {
- return (List) collection;
}
}
1.3 +29 -17 jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/FixedSizeList.java
Index: FixedSizeList.java
===================================================================
RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/decorators/FixedSizeList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FixedSizeList.java 5 May 2003 23:25:22 -0000 1.2
+++ FixedSizeList.java 7 May 2003 11:20:21 -0000 1.3
@@ -96,6 +96,16 @@
super(list);
}
+ /**
+ * Gets the list being decorated.
+ *
+ * @return the decorated list
+ */
+ protected List getList() {
+ return (List) getCollection();
+ }
+
+ //-----------------------------------------------------------------------
public void add(int index, Object object) {
throw new UnsupportedOperationException();
}
@@ -121,19 +131,7 @@
}
public ListIterator listIterator(int index) {
- return new AbstractListIteratorDecorator(getList().listIterator(index)) {
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
- public void add(Object object) {
- throw new UnsupportedOperationException();
- }
-
- public void remove(Object object) {
- throw new UnsupportedOperationException();
- }
- };
+ return new FixedSizeListIterator(getList().listIterator(index));
}
public Object remove(int index) {
@@ -149,8 +147,22 @@
return new FixedSizeList(sub);
}
- protected List getList() {
- return (List) collection;
+ /**
+ * List iterator that only permits changes via set()
+ */
+ public static class FixedSizeListIterator extends AbstractListIteratorDecorator {
+ protected FixedSizeListIterator(ListIterator iterator) {
+ super(iterator);
+ }
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ public void add(Object object) {
+ throw new UnsupportedOperationException();
+ }
+ public void remove(Object object) {
+ throw new UnsupportedOperationException();
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org