You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2011/03/09 18:16:16 UTC

svn commit: r1079894 - /tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java

Author: jukka
Date: Wed Mar  9 17:16:16 2011
New Revision: 1079894

URL: http://svn.apache.org/viewvc?rev=1079894&view=rev
Log:
TIKA-600: [patch] suspect transferable code

Fix based on a patch by Dave Brosius

Modified:
    tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java

Modified: tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java?rev=1079894&r1=1079893&r2=1079894&view=diff
==============================================================================
--- tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java (original)
+++ tika/trunk/tika-app/src/main/java/org/apache/tika/gui/ParsingTransferHandler.java Wed Mar  9 17:16:16 2011
@@ -21,10 +21,11 @@ import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.InputEvent;
 import java.io.File;
-import java.io.InputStream;
+import java.io.IOException;
 import java.util.List;
 import java.util.StringTokenizer;
 import java.util.ArrayList;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 
@@ -32,8 +33,8 @@ import javax.swing.Icon;
 import javax.swing.JComponent;
 import javax.swing.TransferHandler;
 
+import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.MetadataHelper;
 
 /**
  * Utility class that turns drag-and-drop events into Tika parse requests.
@@ -77,26 +78,18 @@ class ParsingTransferHandler extends Tra
     public boolean importData(
             JComponent component, Transferable transferable) {
         try {
-            List<File> files = null;
             if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
-                files = (List<File>) transferable.getTransferData(
-                        DataFlavor.javaFileListFlavor);
+                importFiles((List<File>) transferable.getTransferData(
+                        DataFlavor.javaFileListFlavor));
             } else if (transferable.isDataFlavorSupported(urlListFlavor)) {
                 Object data = transferable.getTransferData(urlListFlavor);
+                URL url = new URL(data.toString());
                 Metadata metadata = new Metadata();
-                InputStream stream = MetadataHelper.getInputStream(
-                        new URL(data.toString()), metadata);
+                TikaInputStream stream = TikaInputStream.get(url, metadata);
                 tika.importStream(stream, metadata);
             } else if (transferable.isDataFlavorSupported(uriListFlavor)) {
-                files = uriToFileList(
-                        transferable.getTransferData(uriListFlavor).toString());
-            }
-
-            for (File file : files) {
-                Metadata metadata = new Metadata();
-                InputStream stream = MetadataHelper.getInputStream(
-                        file.toURI().toURL(), metadata);
-                tika.importStream(stream, metadata);
+                importFiles(uriToFileList(
+                        transferable.getTransferData(uriListFlavor)));
             }
             return true;
         } catch (Exception e) {
@@ -104,6 +97,15 @@ class ParsingTransferHandler extends Tra
         }
     }
 
+    private void importFiles(List<File> files)
+            throws MalformedURLException, IOException {
+        for (File file : files) {
+            Metadata metadata = new Metadata();
+            TikaInputStream stream = TikaInputStream.get(file, metadata);
+            tika.importStream(stream, metadata);
+        }
+    }
+
     public void exportAsDrag(JComponent arg0, InputEvent arg1, int arg2) {
         delegate.exportAsDrag(arg0, arg1, arg2);
     }
@@ -121,9 +123,9 @@ class ParsingTransferHandler extends Tra
         return delegate.getVisualRepresentation(arg0);
     }
 
-    private static List<File> uriToFileList(String data) {
+    private static List<File> uriToFileList(Object data) {
         List<File> list = new ArrayList<File>();
-        StringTokenizer st = new StringTokenizer(data, "\r\n");
+        StringTokenizer st = new StringTokenizer(data.toString(), "\r\n");
         while (st.hasMoreTokens())
         {
             String s = st.nextToken();