You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/07/18 08:28:21 UTC
svn commit: r1691693 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
contentstream/PDFStreamEngine.java pdfparser/PDFStreamParser.java
Author: tilman
Date: Sat Jul 18 06:28:21 2015
New Revision: 1691693
URL: http://svn.apache.org/r1691693
Log:
PDFBOX-2852: use parseNextToken() instead of iterator to be able to pass IOException instead of RuntimeException
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java?rev=1691693&r1=1691692&r2=1691693&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java Sat Jul 18 06:28:21 2015
@@ -24,7 +24,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Stack;
@@ -61,6 +60,8 @@ import org.apache.pdfbox.util.Matrix;
import org.apache.pdfbox.util.Vector;
import org.apache.pdfbox.contentstream.operator.Operator;
import org.apache.pdfbox.contentstream.operator.OperatorProcessor;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
/**
* Processes a PDF content stream and executes certain operations.
@@ -449,10 +450,9 @@ public abstract class PDFStreamEngine
{
List<COSBase> arguments = new ArrayList<COSBase>();
PDFStreamParser parser = new PDFStreamParser(contentStream.getContentStream());
- Iterator<Object> iter = parser.getTokenIterator();
- while (iter.hasNext())
+ Object token = parser.parseNextToken();
+ while (token != null)
{
- Object token = iter.next();
if (token instanceof COSObject)
{
arguments.add(((COSObject) token).getObject());
@@ -466,6 +466,7 @@ public abstract class PDFStreamEngine
{
arguments.add((COSBase) token);
}
+ token = parser.parseNextToken();
}
}
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=1691693&r1=1691692&r2=1691693&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 Sat Jul 18 06:28:21 2015
@@ -19,9 +19,7 @@ package org.apache.pdfbox.pdfparser;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
-import java.util.NoSuchElementException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -63,7 +61,7 @@ public class PDFStreamParser extends Bas
*/
public PDFStreamParser( PDStream stream ) throws IOException
{
- this( (COSStream)stream.getCOSObject() );
+ this(stream.getCOSObject());
}
/**
@@ -116,71 +114,13 @@ public class PDFStreamParser extends Bas
}
/**
- * This will get an iterator which can be used to parse the stream
- * one token after the other.
- *
- * @return an iterator to get one token after the other
- */
- public Iterator<Object> getTokenIterator()
- {
- return new Iterator<Object>()
- {
- private Object token;
-
- private void tryNext()
- {
- try
- {
- if (token == null)
- {
- token = parseNextToken();
- }
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- /** {@inheritDoc} */
- @Override
- public boolean hasNext()
- {
- tryNext();
- return token != null;
- }
-
- /** {@inheritDoc} */
- @Override
- public Object next()
- {
- tryNext();
- Object tmp = token;
- if (tmp == null)
- {
- throw new NoSuchElementException();
- }
- token = null;
- return tmp;
- }
-
- /** {@inheritDoc} */
- @Override
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
- };
- }
-
- /**
* This will parse the next token in the stream.
*
* @return The next token in the stream or null if there are no more tokens in the stream.
*
* @throws IOException If an io error occurs while parsing the stream.
*/
- private Object parseNextToken() throws IOException
+ public Object parseNextToken() throws IOException
{
Object retval;