You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by zh...@apache.org on 2009/06/30 04:46:07 UTC

svn commit: r789538 - /harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java

Author: zhoukevin
Date: Tue Jun 30 02:46:06 2009
New Revision: 789538

URL: http://svn.apache.org/viewvc?rev=789538&view=rev
Log:
Implement -f cmd line option for pack200

Modified:
    harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java

Modified: harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java?rev=789538&r1=789537&r2=789538&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/jretools/src/main/java/org/apache/harmony/jretools/pack200/Main.java Tue Jun 30 02:46:06 2009
@@ -21,7 +21,10 @@
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.OutputStream;
+import java.util.Enumeration;
+import java.util.Properties;
 import java.util.jar.JarInputStream;
 import java.util.jar.JarOutputStream;
 
@@ -33,8 +36,6 @@
 public class Main {
 
     public static void main(String args[]) throws Exception {
-        // TODO: -f isn't implemented here yet
-
         String inputFileName = null;
         String outputFileName = null;
         PackingOptions options = new PackingOptions();
@@ -126,6 +127,19 @@
                 options.setLogFile(args[i].substring(2));
             } else if ("-r".equals(args[i]) || "--repack".equals(args[i])) {
                 options.setRepack(true);
+            } else if (args[i].startsWith("-f")) {
+                String packPropertyFileName = args[i].substring(2);
+                if (packPropertyFileName.length() > 0) {
+                } else if (i + 1 < args.length) {
+                    packPropertyFileName = args[++i];
+                } else {
+                    printErrorMessage("Bad argument: -f ?");
+                    printUsage();
+                    return;
+                }
+                loadPackProperties(packPropertyFileName, options);
+            } else if (args[i].startsWith("--config-file=")) {
+                loadPackProperties(args[i].substring(14), options);
             } else {
                 outputFileName = args[i];
                 if (args.length > i + 1) {
@@ -147,6 +161,35 @@
     }
 
     /*
+     * Load properties for packing
+     */
+    private static void loadPackProperties(String packPropertyFileName,
+            PackingOptions options) throws IOException {
+        Properties packProperties = new Properties();
+        packProperties.load(new FileInputStream(packPropertyFileName));
+        Enumeration<?> enums = packProperties.propertyNames();
+        String propretyName, propretyValue;
+        while (enums.hasMoreElements()) {
+            propretyName = (String) enums.nextElement();
+            propretyValue = packProperties.getProperty(propretyName);
+
+            if ("deflate.hint".equals(propretyName)) {
+                options.setDeflateHint(propretyValue);
+            } else if ("effort".equals(propretyName)) {
+                options.setEffort(Integer.parseInt(propretyValue));
+            } else if ("keep.file.order".equals(propretyName)) {
+                options.setKeepFileOrder(Boolean.getBoolean(propretyValue));
+            } else if ("modification.time".equals(propretyName)) {
+                options.setModificationTime(propretyName);
+            } else if ("segment.limit".equals(propretyName)) {
+                options.setSegmentLimit(Integer.parseInt(propretyValue));
+            } else if ("unknown.attribute".equals(propretyName)) {
+                options.setUnknownAttributeAction(propretyValue);
+            }
+        }
+    }
+
+    /*
      * Pack input stream of jar file into output stream
      */
     private static void pack(String inputFileName, String outputFileName,