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 2017/06/18 13:03:47 UTC
svn commit: r1799083 - in /pdfbox/trunk: ./
pdfbox/src/main/java/org/apache/pdfbox/pdfparser/
Author: lehmi
Date: Sun Jun 18 13:03:47 2017
New Revision: 1799083
URL: http://svn.apache.org/viewvc?rev=1799083&view=rev
Log:
PDFBOX-3536: provide another unread method for byte arrays to avoid array copies
Modified:
pdfbox/trunk/ (props changed)
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java
Propchange: pdfbox/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jun 18 13:03:47 2017
@@ -1,3 +1,3 @@
-/pdfbox/branches/2.0:1760418,1761484,1762133,1763609,1779822,1780783,1780789,1782684,1784450,1792784,1795704,1795712
+/pdfbox/branches/2.0:1760418,1761484,1762133,1763609,1779822,1780783,1780789,1782684,1784450,1792784,1795704,1795712,1799081
/pdfbox/branches/no-awt:1618517-1621410
/pdfbox/no-awt:1618514-1618516
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java?rev=1799083&r1=1799082&r2=1799083&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java Sun Jun 18 13:03:47 2017
@@ -96,6 +96,13 @@ final class InputStreamSource implements
}
@Override
+ public void unread(byte[] bytes, int start, int len) throws IOException
+ {
+ input.unread(bytes, start, len);
+ position -= len - start;
+ }
+
+ @Override
public byte[] readFully(int length) throws IOException
{
byte[] bytes = new byte[length];
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java?rev=1799083&r1=1799082&r2=1799083&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java Sun Jun 18 13:03:47 2017
@@ -20,7 +20,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -424,7 +423,7 @@ public class PDFStreamParser extends Bas
noBinData = false;
}
}
- pdfSource.unread(Arrays.copyOfRange(binCharTestArr, 0, readBytes));
+ pdfSource.unread(binCharTestArr, 0, readBytes);
}
if (!noBinData)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java?rev=1799083&r1=1799082&r2=1799083&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java Sun Jun 18 13:03:47 2017
@@ -80,6 +80,12 @@ final class RandomAccessSource implement
}
@Override
+ public void unread(byte[] bytes, int start, int len) throws IOException
+ {
+ reader.rewind(len - start);
+ }
+
+ @Override
public byte[] readFully(int length) throws IOException
{
return reader.readFully(length);
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java?rev=1799083&r1=1799082&r2=1799083&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java Sun Jun 18 13:03:47 2017
@@ -74,19 +74,29 @@ interface SequentialSource extends Close
* Unreads a single byte.
*
* @param b byte array to push back
- * @throws IOException If there is an error while seeking
+ * @throws IOException if there is an error while unreading
*/
void unread(int b) throws IOException;
/**
* Unreads an array of bytes.
*
- * @param bytes byte array to push back
- * @throws IOException If there is an error while seeking
+ * @param bytes byte array to be unread
+ * @throws IOException if there is an error while unreading
*/
void unread(byte[] bytes) throws IOException;
/**
+ * Unreads a portion of an array of bytes.
+ *
+ * @param bytes byte array to be unread
+ * @param start start index
+ * @param len number of bytes to be unread
+ * @throws IOException if there is an error while unreading
+ */
+ void unread(byte[] bytes, int start, int len) throws IOException;
+
+ /**
* Reads a given number of bytes in its entirety.
*
* @param length the number of bytes to be read