You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by mi...@apache.org on 2012/12/01 18:53:33 UTC

svn commit: r1416028 - in /tika/trunk: CHANGES.txt tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java tika-app/src/test/resources/test-data/testWithSubdirs.zip

Author: mikemccand
Date: Sat Dec  1 17:53:32 2012
New Revision: 1416028

URL: http://svn.apache.org/viewvc?rev=1416028&view=rev
Log:
TIKA-1031: create parent dirs when extracting embedded files

Added:
    tika/trunk/tika-app/src/test/resources/test-data/testWithSubdirs.zip   (with props)
Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
    tika/trunk/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java

Modified: tika/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1416028&r1=1416027&r2=1416028&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Sat Dec  1 17:53:32 2012
@@ -51,6 +51,10 @@ Release 1.3 - Current Development
     certain JVMs this would incorrectly extract the BOM as the tag's
     value (TIKA-1024).
 
+  * ZIP: TikaCLI would hit FileNotFoundException when extracting files
+    that were under sub-directories from a ZIP archive, because it
+    failed to create the parent directories first (TIKA-1031).
+
 Release 1.2 - 07/10/2012
 ---------------------------------
 

Modified: tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java?rev=1416028&r1=1416027&r2=1416028&view=diff
==============================================================================
--- tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java (original)
+++ tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java Sat Dec  1 17:53:32 2012
@@ -706,16 +706,17 @@ public class TikaCLI {
 
             String relID = metadata.get(Metadata.EMBEDDED_RELATIONSHIP_ID);
             if (relID != null && !name.startsWith(relID)) {
-              name = relID + "_" + name;
+                name = relID + "_" + name;
             }
 
             File outputFile = new File(extractDir, name);
-            if (outputFile.exists()) {
-                System.err.println("File '"+name+"' already exists; skipping");
-                return;
+            File parent = outputFile.getParentFile();
+            if (!parent.exists()) {
+                if (!parent.mkdirs()) {
+                    throw new IOException("unable to create directory \"" + parent + "\"");
+                }
             }
-
-            System.out.println("Extracting '"+name+"' ("+contentType+")");
+            System.out.println("Extracting '"+name+"' ("+contentType+") to " + outputFile);
 
             FileOutputStream os = new FileOutputStream(outputFile);
 

Modified: tika/trunk/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java?rev=1416028&r1=1416027&r2=1416028&view=diff
==============================================================================
--- tika/trunk/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java (original)
+++ tika/trunk/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java Sat Dec  1 17:53:32 2012
@@ -215,4 +215,14 @@ public class TikaCLITest extends TestCas
         assertTrue(content.contains("sheetNames: Logical Sheet 3"));
         assertTrue(content.contains("sheetNames: Sheet 4"));
     }
+
+    // TIKA-1031
+    public void testZipWithSubdirs() throws Exception {
+        String[] params = {"-z", resourcePrefix + "testWithSubdirs.zip"};
+        new File("subdir/foo.txt").delete();
+        new File("subdir").delete();
+        TikaCLI.main(params);
+        String content = outContent.toString();
+        assertTrue(content.contains("Extracting 'subdir/foo.txt'"));
+    }
 }

Added: tika/trunk/tika-app/src/test/resources/test-data/testWithSubdirs.zip
URL: http://svn.apache.org/viewvc/tika/trunk/tika-app/src/test/resources/test-data/testWithSubdirs.zip?rev=1416028&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tika/trunk/tika-app/src/test/resources/test-data/testWithSubdirs.zip
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream