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 2015/02/28 17:50:24 UTC

svn commit: r1662965 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/cos/ pdfbox/src/main/java/org/apache/pdfbox/pdfparser/ pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ preflight/src/main/java/org/apache/pdfbox/preflight/parser/

Author: lehmi
Date: Sat Feb 28 16:50:23 2015
New Revision: 1662965

URL: http://svn.apache.org/r1662965
Log:
PDFBOX-2576: changed the internal representation of the object/generation number from long to int as proposed by Andrea Vacondio

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefTrailerResolver.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java Sat Feb 28 16:50:23 2015
@@ -20,12 +20,12 @@ package org.apache.pdfbox.cos;
  * Object representing the physical reference to an indirect pdf object.
  *
  * @author Michael Traut
- * @version $Revision: 1.5 $
+ * 
  */
 public class COSObjectKey implements Comparable<COSObjectKey>
 {
-    private long number;
-    private long generation;
+    private int number;
+    private int generation;
 
     /**
      * PDFObjectKey constructor comment.
@@ -34,7 +34,7 @@ public class COSObjectKey implements Com
      */
     public COSObjectKey(COSObject object)
     {
-        this( object.getObjectNumber().longValue(), object.getGenerationNumber().longValue() );
+        this( object.getObjectNumber().intValue(), object.getGenerationNumber().intValue() );
     }
 
     /**
@@ -43,7 +43,7 @@ public class COSObjectKey implements Com
      * @param num The object number.
      * @param gen The object generation number.
      */
-    public COSObjectKey(long num, long gen)
+    public COSObjectKey(int num, int gen)
     {
         number = num;
         generation = gen;
@@ -65,7 +65,7 @@ public class COSObjectKey implements Com
      *
      * @return The objects generation number.
      */
-    public long getGeneration()
+    public int getGeneration()
     {
         return generation;
     }
@@ -74,7 +74,7 @@ public class COSObjectKey implements Com
      *
      * @return The object's id.
      */
-    public long getNumber()
+    public int getNumber()
     {
         return number;
     }
@@ -85,14 +85,14 @@ public class COSObjectKey implements Com
     @Override
     public int hashCode()
     {
-        return (int)(number + generation);
+        return number + generation;
     }
     /**
      * This will set the objects generation number.
      *
      * @param newGeneration The objects generation number.
      */
-    public void setGeneration(long newGeneration)
+    public void setGeneration(int newGeneration)
     {
         generation = newGeneration;
     }
@@ -101,21 +101,17 @@ public class COSObjectKey implements Com
      *
      * @param newNumber The objects number.
      */
-    public void setNumber(long newNumber)
+    public void setNumber(int newNumber)
     {
         number = newNumber;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public String toString()
     {
-        return "" + getNumber() + " " + getGeneration() + " R";
+        return Integer.toString(number) + " " +  Integer.toString(generation) + " R";
     }
 
-    /** {@inheritDoc} */
     @Override
     public int compareTo(COSObjectKey other)
     {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Sat Feb 28 16:50:23 2015
@@ -1658,9 +1658,9 @@ public abstract class BaseParser impleme
      * @return the object number being read.
      * @throws IOException if an I/O error occurs
      */
-    protected long readObjectNumber() throws IOException
+    protected int readObjectNumber() throws IOException
     {
-        long retval = readLong();
+        int retval = readInt();
         if (retval < 0 || retval >= OBJECT_NUMBER_THRESHOLD)
         {
             throw new IOException("Object Number '" + retval + "' has more than 10 digits or is negative");
@@ -1826,7 +1826,7 @@ public abstract class BaseParser impleme
     protected COSObjectKey parseObjectKey(boolean continueOnError) throws IOException
     {
         //we are going to parse a normal object
-        long number = -1;
+        int number = -1;
         int genNum;
         boolean missingObjectNumber = false;
         try

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Sat Feb 28 16:50:23 2015
@@ -569,7 +569,7 @@ public class COSParser extends BaseParse
                                 // object within object stream;
                                 // get offset of object stream
                                 fileOffset = xrefTrailerResolver.getXrefTable().get(
-                                        new COSObjectKey(-fileOffset, 0));
+                                        new COSObjectKey((int)-fileOffset, 0));
                                 if ((fileOffset == null) || (fileOffset <= 0))
                                 {
                                     throw new IOException(
@@ -787,8 +787,7 @@ public class COSParser extends BaseParse
                     parser.close();
                     // get set of object numbers referenced for this object
                     // stream
-                    final Set<Long> refObjNrs = xrefTrailerResolver
-                            .getContainedObjectNumbers(objstmObjNr);
+                    final Set<Integer> refObjNrs = xrefTrailerResolver.getContainedObjectNumbers(objstmObjNr);
 
                     // register all objects which are referenced to be contained
                     // in object stream
@@ -1279,10 +1278,10 @@ public class COSParser extends BaseParse
                                 byte[] objIDBytes = pdfSource.readFully(length);
                                 String objIdString = new String(objIDBytes, 0,
                                         objIDBytes.length, ISO_8859_1);
-                                Long objectID;
+                                Integer objectID;
                                 try
                                 {
-                                    objectID = Long.valueOf(objIdString);
+                                    objectID = Integer.valueOf(objIdString);
                                 }
                                 catch (NumberFormatException exception)
                                 {
@@ -1777,7 +1776,7 @@ public class COSParser extends BaseParse
         while(true)
         {
             // first obj id
-            long currObjID = readObjectNumber(); 
+            int currObjID = readObjectNumber(); 
             
             // the number of objects in the xref table
             long count = readLong();
@@ -1807,7 +1806,7 @@ public class COSParser extends BaseParse
                 {
                     try
                     {
-                        long currOffset = Long.parseLong(splitString[0]);
+                        int currOffset = Integer.parseInt(splitString[0]);
                         int currGenID = Integer.parseInt(splitString[1]);
                         COSObjectKey objKey = new COSObjectKey(currObjID, currGenID);
                         xrefTrailerResolver.setXRef(objKey, currOffset);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefTrailerResolver.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefTrailerResolver.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefTrailerResolver.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefTrailerResolver.java Sat Feb 28 16:50:23 2015
@@ -51,7 +51,7 @@ import org.apache.pdfbox.cos.COSObjectKe
  * using {@link #setStartxref(long)}. This is used to build the chain of
  * active xref/trailer objects used for creating document trailer and xref table.
  *
- * @author Timo Böhme (timo.boehme at ontochem.com)
+ * @author Timo Böhme
  */
 public class XrefTrailerResolver
 {
@@ -313,14 +313,14 @@ public class XrefTrailerResolver
      *          or <code>null</code> if {@link #setStartxref(long)} was not
      *          called before so that no resolved xref table exists
      */
-    public Set<Long> getContainedObjectNumbers( final int objstmObjNr ) 
+    public Set<Integer> getContainedObjectNumbers( final int objstmObjNr ) 
     {
         if ( resolvedXrefTrailer == null )
         {
             return null;
         }
-        final Set<Long> refObjNrs = new HashSet<Long>();
-        final int       cmpVal    = - objstmObjNr;
+        final Set<Integer> refObjNrs = new HashSet<Integer>();
+        final int cmpVal = - objstmObjNr;
         
         for ( Entry<COSObjectKey,Long> xrefEntry : resolvedXrefTrailer.xrefTable.entrySet() ) 
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sat Feb 28 16:50:23 2015
@@ -176,7 +176,7 @@ public class COSWriter implements ICOSVi
     private long startxref = 0;
 
     // the current object number
-    private long number = 0;
+    private int number = 0;
 
     // maps the object to the keys generated in the writer
     // these are used for indirect references in other objects
@@ -265,7 +265,7 @@ public class COSWriter implements ICOSVi
           
           Map<COSObjectKey, Long> xrefTable = cosDoc.getXrefTable();
           Set<COSObjectKey> keySet = xrefTable.keySet();
-          long highestNumber=0;
+          int highestNumber=0;
           for ( COSObjectKey cosObjectKey : keySet ) 
           {
             COSBase object = cosDoc.getObjectFromPool(cosObjectKey).getObject();
@@ -275,7 +275,7 @@ public class COSWriter implements ICOSVi
                 keyObject.put(cosObjectKey,object);
             }
             
-            long num = cosObjectKey.getNumber();
+            int num = cosObjectKey.getNumber();
             if (num > highestNumber)
             {
                 highestNumber=num;
@@ -327,7 +327,7 @@ public class COSWriter implements ICOSVi
      *
      * @return The current object number.
      */
-    protected long getNumber()
+    protected int getNumber()
     {
         return number;
     }
@@ -386,7 +386,7 @@ public class COSWriter implements ICOSVi
      *
      * @param newNumber The new object number.
      */
-    protected void setNumber(long newNumber)
+    protected void setNumber(int newNumber)
     {
         number = newNumber;
     }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java?rev=1662965&r1=1662964&r2=1662965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java Sat Feb 28 16:50:23 2015
@@ -339,8 +339,8 @@ public class PreflightParser extends PDF
         while (true)
         {
             // just after the xref<EOL> there are an integer
-            long currObjID; // first obj id
-            long count; // the number of objects in the xref table
+            int currObjID; // first obj id
+            int count; // the number of objects in the xref table
 
             long offset = pdfSource.getOffset();
             String line = readLine();
@@ -358,7 +358,7 @@ public class PreflightParser extends PDF
                 // reset pdfSource cursor to read xref information
                 pdfSource.seek(offset);
                 currObjID = readObjectNumber(); // first obj id
-                count = readLong(); // the number of objects in the xref table
+                count = readInt(); // the number of objects in the xref table
             }
 
             skipSpaces();
@@ -390,7 +390,7 @@ public class PreflightParser extends PDF
                 {
                     try
                     {
-                        long currOffset = Long.parseLong(splitString[0]);
+                        int currOffset = Integer.parseInt(splitString[0]);
                         int currGenID = Integer.parseInt(splitString[1]);
                         COSObjectKey objKey = new COSObjectKey(currObjID, currGenID);
                         xrefTrailerResolver.setXRef(objKey, currOffset);
@@ -784,7 +784,7 @@ public class PreflightParser extends PDF
                     parser.close();
 
                     // get set of object numbers referenced for this object stream
-                    final Set<Long> refObjNrs = xrefTrailerResolver.getContainedObjectNumbers(objstmObjNr);
+                    final Set<Integer> refObjNrs = xrefTrailerResolver.getContainedObjectNumbers(objstmObjNr);
 
                     // register all objects which are referenced to be contained in object stream
                     for (COSObject next : parser.getObjects())