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 2015/01/02 16:06:02 UTC

ant git commit: ZipEntry's copy constructor was incomplete

Repository: ant
Updated Branches:
  refs/heads/master f7f5327d2 -> fa15b7c21


ZipEntry's copy constructor was incomplete


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/fa15b7c2
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/fa15b7c2
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/fa15b7c2

Branch: refs/heads/master
Commit: fa15b7c2100d937dc5f99feb9d29a240e9870896
Parents: f7f5327
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Jan 2 16:05:31 2015 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Jan 2 16:05:31 2015 +0100

----------------------------------------------------------------------
 src/main/org/apache/tools/zip/GeneralPurposeBit.java   | 12 +++++++++++-
 src/main/org/apache/tools/zip/ZipEntry.java            |  3 +++
 src/tests/junit/org/apache/tools/zip/ZipEntryTest.java | 10 ++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/fa15b7c2/src/main/org/apache/tools/zip/GeneralPurposeBit.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/zip/GeneralPurposeBit.java b/src/main/org/apache/tools/zip/GeneralPurposeBit.java
index eaafc2c..ab2525d 100644
--- a/src/main/org/apache/tools/zip/GeneralPurposeBit.java
+++ b/src/main/org/apache/tools/zip/GeneralPurposeBit.java
@@ -23,7 +23,7 @@ package org.apache.tools.zip;
  *
  * @since Ant 1.9.0
  */
-public final class GeneralPurposeBit {
+public final class GeneralPurposeBit implements Cloneable {
     /**
      * Indicates that the file is encrypted.
      */
@@ -168,4 +168,14 @@ public final class GeneralPurposeBit {
             && g.languageEncodingFlag == languageEncodingFlag
             && g.dataDescriptorFlag == dataDescriptorFlag;
     }
+
+    @Override
+    public Object clone() {
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException ex) {
+            // impossible
+            throw new RuntimeException("GeneralPurposeBit is not Cloneable?", ex);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/fa15b7c2/src/main/org/apache/tools/zip/ZipEntry.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/zip/ZipEntry.java b/src/main/org/apache/tools/zip/ZipEntry.java
index 375a7ac..8031481 100644
--- a/src/main/org/apache/tools/zip/ZipEntry.java
+++ b/src/main/org/apache/tools/zip/ZipEntry.java
@@ -136,6 +136,9 @@ public class ZipEntry extends java.util.zip.ZipEntry implements Cloneable {
         setInternalAttributes(entry.getInternalAttributes());
         setExternalAttributes(entry.getExternalAttributes());
         setExtraFields(entry.getExtraFields(true));
+        setPlatform(entry.platform);
+        setGeneralPurposeBit(entry.gpb == null ? null :
+                             (GeneralPurposeBit) entry.gpb.clone());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ant/blob/fa15b7c2/src/tests/junit/org/apache/tools/zip/ZipEntryTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/zip/ZipEntryTest.java b/src/tests/junit/org/apache/tools/zip/ZipEntryTest.java
index b0a3294..3c21f6f 100644
--- a/src/tests/junit/org/apache/tools/zip/ZipEntryTest.java
+++ b/src/tests/junit/org/apache/tools/zip/ZipEntryTest.java
@@ -215,4 +215,14 @@ public class ZipEntryTest {
         ZipEntry entry2 = new ZipEntry("bar");
         assertFalse(entry1.equals(entry2));
     }
+
+    @Test
+    public void testCopyConstructor() throws Exception {
+        ZipEntry archiveEntry = new ZipEntry("fred");
+        archiveEntry.setUnixMode(0664);
+        archiveEntry.setMethod(ZipEntry.DEFLATED);
+        archiveEntry.getGeneralPurposeBit().useStrongEncryption(true);
+        ZipEntry copy = new ZipEntry(archiveEntry);
+        assertEquals(archiveEntry, copy);
+    }
 }