Author: bodewig
Date: Fri Aug 28 04:31:43 2009
New Revision: 808751

URL: http://svn.apache.org/viewvc?rev=808751&view=rev
Log:
port createunicodeextrafields from <zip>

Modified:
    
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java

Modified: 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
URL: 
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java?rev=808751&r1=808750&r2=808751&view=diff
==============================================================================
--- 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
 (original)
+++ 
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/Zip.java
 Fri Aug 28 04:31:43 2009
@@ -20,6 +20,8 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.zip.Deflater;
 
 import org.apache.ant.compress.util.ZipStreamFactory;
@@ -28,6 +30,7 @@
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.apache.tools.ant.types.ArchiveFileSet;
+import org.apache.tools.ant.types.EnumeratedAttribute;
 
 /**
  * Creates zip archives.
@@ -38,6 +41,7 @@
     private boolean keepCompression = false;
     private boolean fallBackToUTF8 = false;
     private boolean useLanguageEncodingFlag = true;
+    private UnicodeExtraField createUnicodeExtraFields = 
UnicodeExtraField.NEVER;
 
     public Zip() {
         setFactory(new ZipStreamFactory() {
@@ -51,6 +55,8 @@
                     o.setComment(comment);
                     o.setFallbackToUTF8(fallBackToUTF8);
                     o.setUseLanguageEncodingFlag(useLanguageEncodingFlag);
+                    o.setCreateUnicodeExtraFields(createUnicodeExtraFields
+                                                  .getPolicy());
                     return o;
                 }
             });
@@ -135,4 +141,50 @@
     public void setUseLanguageEncodingFlag(boolean b) {
         useLanguageEncodingFlag = b;
     }
+
+    /**
+     * Whether Unicode extra fields will be created.
+     */
+    public void setCreateUnicodeExtraFields(UnicodeExtraField b) {
+        createUnicodeExtraFields = b;
+    }
+
+    /**
+     * Policiy for creation of Unicode extra fields: never, always or
+     * not-encodeable.
+     */
+    public static final class UnicodeExtraField extends EnumeratedAttribute {
+        private static final Map POLICIES = new HashMap();
+        private static final String NEVER_KEY = "never";
+        private static final String ALWAYS_KEY = "always";
+        private static final String N_E_KEY = "not-encodeable";
+        static {
+            POLICIES.put(NEVER_KEY,
+                         ZipArchiveOutputStream.UnicodeExtraFieldPolicy.NEVER);
+            POLICIES.put(ALWAYS_KEY,
+                         
ZipArchiveOutputStream.UnicodeExtraFieldPolicy.ALWAYS);
+            POLICIES.put(N_E_KEY,
+                         ZipArchiveOutputStream.UnicodeExtraFieldPolicy
+                         .NOT_ENCODEABLE);
+        }
+
+        public String[] getValues() {
+            return new String[] {NEVER_KEY, ALWAYS_KEY, N_E_KEY};
+        }
+
+        public static final UnicodeExtraField NEVER =
+            new UnicodeExtraField(NEVER_KEY);
+
+        private UnicodeExtraField(String name) {
+            setValue(name);
+        }
+
+        public UnicodeExtraField() {
+        }
+
+        public ZipArchiveOutputStream.UnicodeExtraFieldPolicy getPolicy() {
+            return (ZipArchiveOutputStream.UnicodeExtraFieldPolicy)
+                POLICIES.get(getValue());
+        }
+    }
 }
\ No newline at end of file


Reply via email to