You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/09/14 10:41:28 UTC

svn commit: r1624810 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos: COSDocument.java COSStream.java

Author: lehmi
Date: Sun Sep 14 08:41:28 2014
New Revision: 1624810

URL: http://svn.apache.org/r1624810
Log:
PDFBOX-2301: move the handling of scratch files to COSStream

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java?rev=1624810&r1=1624809&r2=1624810&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java Sun Sep 14 08:41:28 2014
@@ -28,7 +28,6 @@ import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pdfbox.io.RandomAccessFile;
 import org.apache.pdfbox.pdfparser.NonSequentialPDFParser;
 import org.apache.pdfbox.pdfparser.PDFObjectStreamParser;
 import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface;
@@ -186,19 +185,7 @@ public class COSDocument extends COSBase
      */
     public COSStream createCOSStream()
     {
-        RandomAccessFile scratchFile = null;
-        if (useScratchFiles)
-        {
-            scratchFile = createScratchFile();
-        }
-        if (scratchFile != null)
-        {
-            return new COSStream( scratchFile );
-        }
-        else
-        {
-            return new COSStream( );
-        }
+        return new COSStream( useScratchFiles, scratchDirectory);
     }
 
     /**
@@ -210,36 +197,9 @@ public class COSDocument extends COSBase
      */
     public COSStream createCOSStream(COSDictionary dictionary)
     {
-        RandomAccessFile scratchFile = null;
-        if (useScratchFiles)
-        {
-            scratchFile = createScratchFile();
-        }
-        if (scratchFile != null)
-        {
-            return new COSStream( dictionary, scratchFile );
-        }
-        else
-        {
-            return new COSStream( dictionary );
-        }
+        return new COSStream( dictionary, useScratchFiles, scratchDirectory );
     }
 
-    private RandomAccessFile createScratchFile()
-    {
-        RandomAccessFile buffer = null;
-        try 
-        {
-            File scratchFile = File.createTempFile("PDFBox", null, scratchDirectory);
-            scratchFile.deleteOnExit();
-            buffer = new RandomAccessFile(scratchFile, "rw");
-        }
-        catch (IOException exception)
-        {
-            LOG.error("Can't create temp file, using memory buffer instead", exception);
-        }
-        return buffer;
-    }
     /**
      * This will get the first dictionary object by type.
      *

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java?rev=1624810&r1=1624809&r2=1624810&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSStream.java Sun Sep 14 08:41:28 2014
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
 import java.io.Closeable;
+import java.io.File;
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -33,6 +34,7 @@ import org.apache.pdfbox.filter.FilterFa
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.io.RandomAccess;
 import org.apache.pdfbox.io.RandomAccessBuffer;
+import org.apache.pdfbox.io.RandomAccessFile;
 import org.apache.pdfbox.io.RandomAccessFileInputStream;
 import org.apache.pdfbox.io.RandomAccessFileOutputStream;
 import org.apache.pdfbox.pdfparser.PDFStreamParser;
@@ -40,7 +42,7 @@ import org.apache.pdfbox.pdfparser.PDFSt
 /**
  * This class represents a stream object in a PDF document.
  *
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
+ * @author Ben Litchfield
  */
 public class COSStream extends COSDictionary implements Closeable
 {
@@ -69,8 +71,7 @@ public class COSStream extends COSDictio
      */
     public COSStream( )
     {
-        super();
-        buffer = new RandomAccessBuffer();
+        this(false, null);
     }
 
     /**
@@ -81,19 +82,24 @@ public class COSStream extends COSDictio
      */
     public COSStream( COSDictionary dictionary )
     {
-        super( dictionary );
-        buffer = new RandomAccessBuffer();
+        this(dictionary, false, null);
     }
 
     /**
      * Constructor.  Creates a new stream with an empty dictionary.
      *
      */
-    protected COSStream( RandomAccess randomBuffer )
+    public COSStream( boolean useScratchFiles, File scratchDirectory )
     {
         super();
-        buffer = randomBuffer;
-        
+        if (useScratchFiles)
+        {
+            buffer = createScratchFile(scratchDirectory);
+        }
+        if (buffer == null)
+        {
+            buffer = new RandomAccessBuffer();
+        }
     }
 
     /**
@@ -102,10 +108,33 @@ public class COSStream extends COSDictio
      * @param dictionary The dictionary that is associated with this stream.
      * 
      */
-    protected COSStream( COSDictionary dictionary, RandomAccess randomBuffer  )
+    public COSStream( COSDictionary dictionary, boolean useScratchFiles, File scratchDirectory  )
     {
         super( dictionary );
-        buffer = randomBuffer;
+        if (useScratchFiles)
+        {
+            buffer = createScratchFile(scratchDirectory);
+        }
+        if (buffer == null)
+        {
+            buffer = new RandomAccessBuffer();
+        }
+    }
+
+    private RandomAccessFile createScratchFile(File scratchDirectory)
+    {
+        RandomAccessFile buffer = null;
+        try 
+        {
+            File scratchFile = File.createTempFile("PDFBox", null, scratchDirectory);
+            scratchFile.deleteOnExit();
+            buffer = new RandomAccessFile(scratchFile, "rw");
+        }
+        catch (IOException exception)
+        {
+            LOG.error("Can't create temp file, using memory buffer instead", exception);
+        }
+        return buffer;
     }
 
     /**