Author: tilman
Date: Tue Nov 11 16:23:59 2025
New Revision: 1929663

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov; DRY refactoring; closes 
#321

Modified:
   pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java       
Tue Nov 11 16:23:54 2025        (r1929662)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java       
Tue Nov 11 16:23:59 2025        (r1929663)
@@ -82,18 +82,9 @@ public class COSArray extends COSBase im
      */
     public void add( COSBase object )
     {
-        if ((object instanceof COSDictionary || object instanceof COSArray) && 
!object.isDirect()
-                && object.getKey() != null)
-        {
-            COSObject cosObject = new COSObject(object, object.getKey());
-            objects.add(cosObject);
-            getUpdateState().update(cosObject);
-        }
-        else
-        {
-            objects.add(object);
-            getUpdateState().update(object);
-        }
+        COSBase objectToAdd = maybeWrap(object);
+        objects.add(objectToAdd);
+        getUpdateState().update(objectToAdd);
     }
 
     /**
@@ -120,18 +111,9 @@ public class COSArray extends COSBase im
      */
     public void add( int i, COSBase object)
     {
-        if ((object instanceof COSDictionary || object instanceof COSArray) && 
!object.isDirect()
-                && object.getKey() != null)
-        {
-            COSObject cosObject = new COSObject(object, object.getKey());
-            objects.add(i, cosObject);
-            getUpdateState().update(cosObject);
-        }
-        else
-        {
-            objects.add(i, object);
-            getUpdateState().update(object);
-        }
+        COSBase objectToAdd = maybeWrap(object);
+        objects.add(i, objectToAdd);
+        getUpdateState().update(objectToAdd);
     }
 
     /**
@@ -219,18 +201,9 @@ public class COSArray extends COSBase im
      */
     public void set( int index, COSBase object )
     {
-        if ((object instanceof COSDictionary || object instanceof COSArray) && 
!object.isDirect()
-                && object.getKey() != null)
-        {
-            COSObject cosObject = new COSObject(object, object.getKey());
-            objects.set(index, cosObject);
-            getUpdateState().update(cosObject);
-        }
-        else
-        {
-            objects.set(index, object);
-            getUpdateState().update(object);
-        }
+        COSBase objectToAdd = maybeWrap(object);
+        objects.set(index, objectToAdd);
+        getUpdateState().update(objectToAdd);
     }
 
     /**
@@ -861,4 +834,15 @@ public class COSArray extends COSBase im
         }
     }
 
+    // wrap indirect objects
+    private COSBase maybeWrap(COSBase object)
+    {
+        COSBase objectToAdd = object;
+        if ((object instanceof COSDictionary || object instanceof COSArray) && 
!object.isDirect()
+                && object.getKey() != null)
+        {
+            objectToAdd = new COSObject(object, object.getKey());
+        }
+        return objectToAdd;
+    }
 }

Reply via email to