You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ma...@apache.org on 2010/01/14 09:56:36 UTC

svn commit: r899123 - /poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java

Author: maxcom
Date: Thu Jan 14 08:56:35 2010
New Revision: 899123

URL: http://svn.apache.org/viewvc?rev=899123&view=rev
Log:
ExtractorFactory: save OOXML stream into temporary file before text extraction - this reduces memory usage and allows temporary file cleanup

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java?rev=899123&r1=899122&r2=899123&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java Thu Jan 14 08:56:35 2010
@@ -16,13 +16,7 @@
 ==================================================================== */
 package org.apache.poi.extractor;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.Iterator;
 
@@ -30,6 +24,8 @@
 import org.apache.poi.POITextExtractor;
 import org.apache.poi.POIXMLDocument;
 import org.apache.poi.POIXMLTextExtractor;
+import org.apache.poi.util.TempFile;
+import org.apache.poi.util.IOUtils;
 import org.apache.poi.hdgf.extractor.VisioTextExtractor;
 import org.apache.poi.hpbf.extractor.PublisherTextExtractor;
 import org.apache.poi.hslf.extractor.PowerPointExtractor;
@@ -87,9 +83,22 @@
 		if(POIFSFileSystem.hasPOIFSHeader(inp)) {
 			return createExtractor(new POIFSFileSystem(inp));
 		}
+
 		if(POIXMLDocument.hasOOXMLHeader(inp)) {
-			return createExtractor(OPCPackage.open(inp));
-		}
+            File file = TempFile.createTempFile("poi-ooxml-", ".tmp");
+
+            try {
+                FileOutputStream out = new FileOutputStream(file);
+                IOUtils.copy(inp, out);
+                out.close();
+
+                return createExtractor(OPCPackage.open(file.getPath()));
+            } finally {
+                if (file.exists()) {
+                    file.delete();
+                }
+            }
+        }
 		throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
 	}
 	



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org