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;