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;
+ }
}