List Info

Thread: svn commit: r500692 - in /ant/core/trunk/src/main/org/apache/tools/ant: taskdefs/DependSet.java type




svn commit: r500692 - in /ant/core/trunk/src/main/org/apache/tool s/ant: taskdefs/DependSet.java type
user name
2007-01-27 17:40:37
Author: jkf
Date: Sat Jan 27 15:40:37 2007
New Revision: 500692

URL: 
http://svn.apache.org/viewvc?view=rev&rev=500692
Log:
Pr: 41284 dependset throws NullPointerException. Sort is not
suitable to sort items in an order that might change during
sorting.

Modified:
   
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Depend
Set.java
   
ant/core/trunk/src/main/org/apache/tools/ant/types/resources
/Sort.java

Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Depend
Set.java
URL: http://svn.apache.org/
viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs
/DependSet.java?view=diff&rev=500692&r1=500691&r
2=500692
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Depend
Set.java (original)
+++
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Depend
Set.java Sat Jan 27 15:40:37 2007
 -94,22
+94,7 
             super.add(NOT_EXISTS);
         }
     }
-    private static class Xest extends Sort {
-        private Xest(ResourceCollection rc,
ResourceComparator c) {
-            super.add(c);
-            super.add(rc);
-        }
-    }
-    private static class Oldest extends Xest {
-        private Oldest(ResourceCollection rc) {
-            super(rc, DATE_ASC);
-        }
-    }
-    private static class Newest extends Xest {
-        private Newest(ResourceCollection rc) {
-            super(rc, DATE_DESC);
-        }
-    }
+
     private static class HideMissingBasedir implements
ResourceCollection {
         private FileSet fs;
 
 -220,7
+205,7 
             log(neTargets + " nonexistent
targets", Project.MSG_VERBOSE);
             return false;
         }
-        FileResource oldestTarget = (FileResource) (new
Oldest(targets).iterator().next());
+        FileResource oldestTarget = (FileResource)
getOldest(targets);
         log(oldestTarget + " is oldest target
file", Project.MSG_VERBOSE);
 
         logFuture(sources, datesel);
 -230,7
+215,7 
             log(neSources + " nonexistent
sources", Project.MSG_VERBOSE);
             return false;
         }
-        Resource newestSource = (Resource) (new
Newest(sources).iterator().next());
+        Resource newestSource = (Resource)
getNewest(sources);
         log(newestSource.toLongString() + " is newest
source", Project.MSG_VERBOSE);
         return oldestTarget.getLastModified() >=
newestSource.getLastModified();
     }
 -243,4
+228,29 
             log("Warning: " + i.next() + "
modified in the future.", Project.MSG_WARN);
         }
     }
+
+    private Resource getXest(ResourceCollection rc,
ResourceComparator c) {
+        Iterator i = rc.iterator();
+        if (!i.hasNext()) {
+            return null;
+
+        }
+        Resource xest = (Resource) i.next();
+        while (i.hasNext()) {
+            Resource next = (Resource) i.next();
+            if (c.compare(xest, next) < 0) {
+                xest = next;
+            }
+        }
+        return xest;
+    }
+
+    private Resource getOldest(ResourceCollection rc) {
+        return getXest(rc, DATE_ASC);
+    }
+
+    private Resource getNewest(ResourceCollection rc) {
+        return getXest(rc, DATE_DESC);
+    }
+
 }

Modified:
ant/core/trunk/src/main/org/apache/tools/ant/types/resources
/Sort.java
URL: http://svn.apache.or
g/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/
resources/Sort.java?view=diff&rev=500692&r1=500691&a
mp;r2=500692
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/types/resources
/Sort.java (original)
+++
ant/core/trunk/src/main/org/apache/tools/ant/types/resources
/Sort.java Sat Jan 27 15:40:37 2007
 -35,6
+35,10 
 
 /**
  * ResourceCollection that sorts another
ResourceCollection.
+ *
+ * Note that Sort must not be used in cases where the
ordering of the objects
+ * being sorted might change during the sorting process.
+ *
  * since Ant 1.7
  */
 public class Sort extends BaseResourceCollectionWrapper {



------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribeant.apache.org
For additional commands, e-mail: dev-helpant.apache.org


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )