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:55:43 UTC

svn commit: r815066 - /commons/proper/collections/trunk/src/java/org/apache/commons/collections/list/PredicatedList.java

Author: bayard
Date: Tue Sep 15 05:55:43 2009
New Revision: 815066

URL: http://svn.apache.org/viewvc?rev=815066&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:

    ------------------------------------------------------------------------
    r555925 | skestle | 2007-07-13 03:39:24 -0700 (Fri, 13 Jul 2007) | 2 lines
    
    Added Edwin Tellman's patch for COLLECTIONS-243.  
    It all seems pretty reasonable, and it should all be checked again as the project is worked through
    ------------------------------------------------------------------------
    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/list/PredicatedList.java

Modified: commons/proper/collections/trunk/src/java/org/apache/commons/collections/list/PredicatedList.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/list/PredicatedList.java?rev=815066&r1=815065&r2=815066&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/java/org/apache/commons/collections/list/PredicatedList.java (original)
+++ commons/proper/collections/trunk/src/java/org/apache/commons/collections/list/PredicatedList.java Tue Sep 15 05:55:43 2009
@@ -16,15 +16,14 @@
  */
 package org.apache.commons.collections.list;
 
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
 import org.apache.commons.collections.Predicate;
 import org.apache.commons.collections.collection.PredicatedCollection;
 import org.apache.commons.collections.iterators.AbstractListIteratorDecorator;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.ListIterator;
+
 /**
  * Decorates another <code>List</code> to validate that all additions
  * match a specified predicate.
@@ -44,7 +43,7 @@
  * @author Stephen Colebourne
  * @author Paul Jack
  */
-public class PredicatedList extends PredicatedCollection implements List {
+public class PredicatedList<E> extends PredicatedCollection<E> implements List<E> {
 
     /** Serialization version */
     private static final long serialVersionUID = -5722039223898659102L;
@@ -57,11 +56,12 @@
      * 
      * @param list  the list to decorate, must not be null
      * @param predicate  the predicate to use for validation, must not be null
+     * @return the decorated list
      * @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);
+    public static <T> List<T> decorate(List<T> list, Predicate<? super T> predicate) {
+        return new PredicatedList<T>(list, predicate);
     }
 
     //-----------------------------------------------------------------------
@@ -76,7 +76,7 @@
      * @throws IllegalArgumentException if list or predicate is null
      * @throws IllegalArgumentException if the list contains invalid elements
      */
-    protected PredicatedList(List list, Predicate predicate) {
+    protected PredicatedList(List<E> list, Predicate<? super E> predicate) {
         super(list, predicate);
     }
 
@@ -85,73 +85,73 @@
      * 
      * @return the decorated list
      */
-    protected List getList() {
-        return (List) getCollection();
+    protected List<E> decorated() {
+        return (List<E>) super.decorated();
     }
 
     //-----------------------------------------------------------------------
-    public Object get(int index) {
-        return getList().get(index);
+    public E get(int index) {
+        return decorated().get(index);
     }
 
     public int indexOf(Object object) {
-        return getList().indexOf(object);
+        return decorated().indexOf(object);
     }
 
     public int lastIndexOf(Object object) {
-        return getList().lastIndexOf(object);
+        return decorated().lastIndexOf(object);
     }
 
-    public Object remove(int index) {
-        return getList().remove(index);
+    public E remove(int index) {
+        return decorated().remove(index);
     }
 
     //-----------------------------------------------------------------------
-    public void add(int index, Object object) {
+    public void add(int index, E object) {
         validate(object);
-        getList().add(index, object);
+        decorated().add(index, object);
     }
 
-    public boolean addAll(int index, Collection coll) {
-        for (Iterator it = coll.iterator(); it.hasNext(); ) {
-            validate(it.next());
+    public boolean addAll(int index, Collection<? extends E> coll) {
+        for (E aColl : coll) {
+            validate(aColl);
         }
-        return getList().addAll(index, coll);
+        return decorated().addAll(index, coll);
     }
 
-    public ListIterator listIterator() {
+    public ListIterator<E> listIterator() {
         return listIterator(0);
     }
 
-    public ListIterator listIterator(int i) {
-        return new PredicatedListIterator(getList().listIterator(i));
+    public ListIterator<E> listIterator(int i) {
+        return new PredicatedListIterator(decorated().listIterator(i));
     }
 
-    public Object set(int index, Object object) {
+    public E set(int index, E object) {
         validate(object);
-        return getList().set(index, object);
+        return decorated().set(index, object);
     }
 
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new PredicatedList(sub, predicate);
+    public List<E> subList(int fromIndex, int toIndex) {
+        List<E> sub = decorated().subList(fromIndex, toIndex);
+        return new PredicatedList<E>(sub, predicate);
     }
 
     /**
      * Inner class Iterator for the PredicatedList
      */
-    protected class PredicatedListIterator extends AbstractListIteratorDecorator {
+    protected class PredicatedListIterator extends AbstractListIteratorDecorator<E> {
         
-        protected PredicatedListIterator(ListIterator iterator) {
+        protected PredicatedListIterator(ListIterator<E> iterator) {
             super(iterator);
         }
         
-        public void add(Object object) {
+        public void add(E object) {
             validate(object);
             iterator.add(object);
         }
         
-        public void set(Object object) {
+        public void set(E object) {
             validate(object);
             iterator.set(object);
         }