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 2019/02/27 16:25:05 UTC

svn commit: r1854469 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java

Author: tilman
Date: Wed Feb 27 16:25:05 2019
New Revision: 1854469

URL: http://svn.apache.org/viewvc?rev=1854469&view=rev
Log:
PDFBOX-4475: optimize by using separate Set instead of calling Map.containsValue()

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java?rev=1854469&r1=1854468&r2=1854469&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java Wed Feb 27 16:25:05 2019
@@ -20,8 +20,10 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -43,6 +45,7 @@ public class PDFCloneUtility
 {
     private final PDDocument destination;
     private final Map<Object,COSBase> clonedVersion = new HashMap<Object,COSBase>();
+    private final Set<COSBase> clonedValues = new HashSet<COSBase>();
 
     /**
      * Creates a new instance for the given target document.
@@ -81,7 +84,7 @@ public class PDFCloneUtility
               //we are done, it has already been converted.
               return retval;
           }
-          if (base instanceof COSBase && clonedVersion.containsValue(base))
+          if (base instanceof COSBase && clonedValues.contains(base))
           {
               // Don't clone a clone
               return (COSBase) base;
@@ -151,10 +154,10 @@ public class PDFCloneUtility
               retval = (COSBase)base;
           }
           clonedVersion.put( base, retval );
+          clonedValues.add(retval);
           return retval;
       }
 
-
       /**
        * Merges two objects of the same type by deep-cloning its members.
        * <br>
@@ -242,6 +245,6 @@ public class PDFCloneUtility
               retval = (COSBase)base;
           }
           clonedVersion.put( base, retval );
+          clonedValues.add(retval);
       }
-
 }