Author: tilman
Date: Sat Sep 20 16:44:42 2025
New Revision: 1928646

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

Modified:
   pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
   
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java

Modified: 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java   
    Sat Sep 20 16:44:38 2025        (r1928645)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java   
    Sat Sep 20 16:44:42 2025        (r1928646)
@@ -186,15 +186,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/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java 
    Sat Sep 20 16:44:38 2025        (r1928645)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java 
    Sat Sep 20 16:44:42 2025        (r1928646)
@@ -104,4 +104,23 @@ 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.
+     */
+    default void visitFromObject(COSObject obj) throws IOException
+    {
+        COSBase base = obj.getObject();
+        if (base == null)
+        {
+            visitFromNull(COSNull.NULL);
+        }
+        else
+        {
+            base.accept(this);
+        }
+    }
 }

Reply via email to