You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2009/09/21 20:44:09 UTC

svn commit: r817368 - in /ant/sandbox/antlibs/compress/trunk/src: main/org/apache/ant/compress/taskdefs/ArchiveBase.java tests/antunit/ar-test.xml tests/antunit/cpio-test.xml tests/antunit/tar-test.xml tests/antunit/zip-test.xml

Author: bodewig
Date: Mon Sep 21 18:44:09 2009
New Revision: 817368

URL: http://svn.apache.org/viewvc?rev=817368&view=rev
Log:
update mode

Modified:
    ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
    ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml
    ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml
    ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml
    ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml

Modified: ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java?rev=817368&r1=817367&r2=817368&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java (original)
+++ ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java Mon Sep 21 18:44:09 2009
@@ -28,6 +28,7 @@
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 import java.util.zip.ZipException;
@@ -165,6 +166,10 @@
         mode = m;
     }
 
+    protected Mode getMode() {
+        return mode;
+    }
+
     /**
      * Encoding of file names.
      */
@@ -290,7 +295,7 @@
                     = new ArrayList/*<ResourceWithFlags>*/();
                 toAdd.addAll(sourceResources);
 
-                if (checkAndLogUpToDate(sourceResources, targetArchive,
+                if (checkAndLogUpToDate(toAdd, targetArchive,
                                         existingEntries)) {
                     return;
                 }
@@ -369,8 +374,8 @@
                                         Resource targetArchive,
                                         ArchiveFileSet existingEntries) {
         try {
-            if (!Mode.FORCE_CREATE.equals(mode.getValue())
-                && !Mode.FORCE_REPLACE.equals(mode.getValue())
+            if (!Mode.FORCE_CREATE.equals(getMode().getValue())
+                && !Mode.FORCE_REPLACE.equals(getMode().getValue())
                 && isUpToDate(src, existingEntries)) {
                 log(targetArchive + " is up-to-date, nothing to do.");
                 return true;
@@ -387,7 +392,9 @@
      *
      * <p>Will only ever be invoked if the target exists.</p>
      *
-     * @param src the resources that have been found as sources
+     * @param src the resources that have been found as sources, may
+     * be modified in "update" mode to remove entries that are up to
+     * date
      * @param existingEntries the target archive as fileset
      *
      * @return true if the target is up-to-date
@@ -404,12 +411,27 @@
                 new MappedResource(r.getResource(),
                                    new MergingMapper(r.getName()));
         }
-        return ResourceUtils
+        Resource[] outOfDate = ResourceUtils
             .selectOutOfDateSources(this, srcResources,
                                     new IdentityMapper(),
                                     existingEntries
-                                    .getDirectoryScanner(getProject()))
-            .length == 0;
+                                    .getDirectoryScanner(getProject()));
+        if (outOfDate.length > 0 && Mode.UPDATE.equals(getMode().getValue())) {
+            HashSet/*<String>*/ oodNames = new HashSet/*<String>*/();
+            for (int i = 0; i < outOfDate.length; i++) {
+                oodNames.add(outOfDate[i].getName());
+            }
+            List/*<ResourceWithFlags>*/ copy =
+                new LinkedList/*<ResourceWithFlags>*/(src);
+            src.clear();
+            for (Iterator i = copy.iterator(); i.hasNext(); ) {
+                ResourceWithFlags r = (ResourceWithFlags) i.next();
+                if (oodNames.contains(r.getName())) {
+                    src.add(r);
+                }
+            }
+        }
+        return outOfDate.length == 0;
     }
 
     /**
@@ -419,8 +441,8 @@
     private void addResourcesToKeep(Collection/*<ResourceWithFlags>*/ toAdd,
                                     ArchiveFileSet target,
                                     Collection/*<ResourceWithFlags>*/ src) {
-        if (!Mode.FORCE_CREATE.equals(mode.getValue())
-            && !Mode.CREATE.equals(mode.getValue())) {
+        if (!Mode.FORCE_CREATE.equals(getMode().getValue())
+            && !Mode.CREATE.equals(getMode().getValue())) {
             try {
                 toAdd.addAll(findUnmatchedTargets(target, src));
             } catch (IOException ioex) {
@@ -772,8 +794,8 @@
     private File maybeCopyTarget() {
         File copyOfDest = null;
         try {
-            if (!Mode.FORCE_CREATE.equals(mode.getValue())
-                && !Mode.CREATE.equals(mode.getValue())) {
+            if (!Mode.FORCE_CREATE.equals(getMode().getValue())
+                && !Mode.CREATE.equals(getMode().getValue())) {
                 copyOfDest = FILE_UTILS.createTempFile(getTaskName(), ".tmp",
                                                        null, true, false);
                 ResourceUtils.copyResource(getDest(),
@@ -796,27 +818,27 @@
         /**
          * Create a new archive.
          */
-        private static final String CREATE = "create";
+        public static final String CREATE = "create";
         /**
          * Create a new archive even if the target exists and seems
          * up-to-date.
          */
-        private static final String FORCE_CREATE = "force-create";
+        public static final String FORCE_CREATE = "force-create";
         /**
          * Update an existing archive.
          */
-        private static final String UPDATE = "update";
+        public static final String UPDATE = "update";
         /**
          * Update an existing archive, replacing all existing entries
          * with those from sources.
          */
-        private static final String REPLACE = "replace";
+        public static final String REPLACE = "replace";
         /**
          * Update an existing archive - replacing all existing entries
          * with those from sources - even if the target exists and
          * seems up-to-date.
          */
-        private static final String FORCE_REPLACE = "force-replace";
+        public static final String FORCE_REPLACE = "force-replace";
 
         public Mode() {
             super();

Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml?rev=817368&r1=817367&r2=817368&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml Mon Sep 21 18:44:09 2009
@@ -519,7 +519,7 @@
        src="${dest}" dest="${dest}.bak"/>
   </target>
 
-  <target name="FUTURE-testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
+  <target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
     <touch file="${input}/ar-test.xml"/>
     <cmp:ar dest="${dest}" mode="update">
       <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>

Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml?rev=817368&r1=817367&r2=817368&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml Mon Sep 21 18:44:09 2009
@@ -552,7 +552,7 @@
        src="${dest}" dest="${dest}.bak"/>
   </target>
 
-  <target name="FUTURE-testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
+  <target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
     <touch file="${input}/ar-test.xml"/>
     <cmp:cpio dest="${dest}" mode="update">
       <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>

Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml?rev=817368&r1=817367&r2=817368&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml Mon Sep 21 18:44:09 2009
@@ -569,7 +569,7 @@
        src="${dest}" dest="${dest}.bak"/>
   </target>
 
-  <target name="FUTURE-testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
+  <target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
     <touch file="${input}/ar-test.xml"/>
     <cmp:tar dest="${dest}" mode="update">
       <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>

Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml
URL: http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml?rev=817368&r1=817367&r2=817368&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml Mon Sep 21 18:44:09 2009
@@ -577,7 +577,7 @@
        src="${dest}" dest="${dest}.bak"/>
   </target>
 
-  <target name="FUTURE-testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
+  <target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
     <touch file="${input}/ar-test.xml"/>
     <cmp:zip dest="${dest}" mode="update">
       <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>