Author: tilman
Date: Sat Sep 20 16:44:38 2025
New Revision: 1928645

Log:
PDFBOX-6073: Add option to implement custom ICOSVisitor behaviour for COSObject 
as suggested by jp-db; closes #255

Modified:
   pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
   pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
   pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java      
Sat Sep 20 12:10:02 2025        (r1928644)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java      
Sat Sep 20 16:44:38 2025        (r1928645)
@@ -160,15 +160,7 @@ public class COSObject extends COSBase i
     @Override
     public void accept( ICOSVisitor visitor ) throws IOException
     {
-        COSBase object = getObject();
-        if (object != null)
-        {
-            object.accept(visitor);
-        }
-        else
-        {
-            COSNull.NULL.accept(visitor);
-        }
+        visitor.visitFromObject(this);
     }
 
     /**

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java    
Sat Sep 20 12:10:02 2025        (r1928644)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java    
Sat Sep 20 16:44:38 2025        (r1928645)
@@ -104,4 +104,12 @@ public interface ICOSVisitor
      * @throws IOException If there is an error while visiting this object.
      */
     void visitFromString(COSString obj) throws IOException;
+
+    /**
+     * Notification of visit to object.
+     *
+     * @param obj The Object that is being visited.
+     * @throws IOException If there is an error while visiting this object.
+     */
+    void visitFromObject(COSObject obj) throws IOException;
 }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java    
    Sat Sep 20 12:10:02 2025        (r1928644)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java    
    Sat Sep 20 16:44:38 2025        (r1928645)
@@ -1447,6 +1447,20 @@ public class COSWriter implements ICOSVi
         }
     }
 
+    @Override
+    public void visitFromObject(COSObject obj) throws IOException
+    {
+        COSBase base = obj.getObject();
+        if (base == null)
+        {
+            visitFromNull(COSNull.NULL);
+        }
+        else
+        {
+            base.accept(this);
+        }
+    }
+
     /**
      * This will write the pdf document.
      *

Reply via email to