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 2023/12/20 11:59:33 UTC

svn commit: r1914796 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java

Author: tilman
Date: Wed Dec 20 11:59:33 2023
New Revision: 1914796

URL: http://svn.apache.org/viewvc?rev=1914796&view=rev
Log:
PDFBOX-5660: use switch

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java?rev=1914796&r1=1914795&r2=1914796&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java Wed Dec 20 11:59:33 2023
@@ -99,107 +99,72 @@ public abstract class PDAnnotation imple
      * Create the correct annotation from the base COS object.
      *
      * @param base The COS object that is the annotation.
-     * @return The correctly typed annotation object.
+     * @return The correctly typed annotation object, never null.
      *
      * @throws IOException If the annotation type is unknown.
      */
     public static PDAnnotation createAnnotation(COSBase base) throws IOException
     {
-        PDAnnotation annot = null;
         if (base instanceof COSDictionary)
         {
             COSDictionary annotDic = (COSDictionary) base;
             String subtype = annotDic.getNameAsString(COSName.SUBTYPE);
-            if (PDAnnotationFileAttachment.SUB_TYPE.equals(subtype))
+            if (null == subtype)
             {
-                annot = new PDAnnotationFileAttachment(annotDic);
+                LOG.debug("Unknown annotation subtype");
+                return new PDAnnotationUnknown(annotDic);
             }
-            else if (PDAnnotationLine.SUB_TYPE.equals(subtype))
+            switch (subtype)
             {
-                annot = new PDAnnotationLine(annotDic);
-            }
-            else if (PDAnnotationLink.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationLink(annotDic);
-            }
-            else if (PDAnnotationPopup.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationPopup(annotDic);
-            }
-            else if (PDAnnotationRubberStamp.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationRubberStamp(annotDic);
-            }
-            else if (PDAnnotationSquare.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationSquare(annotDic);
-            }
-            else if (PDAnnotationCircle.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationCircle(annotDic);
-            }
-            else if (PDAnnotationPolygon.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationPolygon(annotDic);
-            }
-            else if (PDAnnotationPolyline.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationPolyline(annotDic);
-            }
-            else if (PDAnnotationInk.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationInk(annotDic);
-            }
-            else if (PDAnnotationText.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationText(annotDic);
-            }
-            else if (PDAnnotationHighlight.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationHighlight(annotDic);
-            }
-            else if (PDAnnotationUnderline.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationUnderline(annotDic);
-            }
-            else if (PDAnnotationStrikeout.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationStrikeout(annotDic);
-            }
-            else if (PDAnnotationSquiggly.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationSquiggly(annotDic);
-            }
-            else if (PDAnnotationWidget.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationWidget(annotDic);
-            }
-            else if (PDAnnotationFreeText.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationFreeText(annotDic);
-            }
-            else if (PDAnnotationCaret.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationCaret(annotDic);
-            }
-            else if (PDAnnotationSound.SUB_TYPE.equals(subtype))
-            {
-                annot = new PDAnnotationSound(annotDic);
-            }
-            else
-            {
-                // TODO not yet implemented:
-                // Movie, Screen, PrinterMark, TrapNet, Watermark, 3D, Redact
-                annot = new PDAnnotationUnknown(annotDic);
-                LOG.debug("Unknown or unsupported annotation subtype {}", subtype);
+                case PDAnnotationFileAttachment.SUB_TYPE:
+                    return new PDAnnotationFileAttachment(annotDic);
+                case PDAnnotationLine.SUB_TYPE:
+                    return new PDAnnotationLine(annotDic);
+                case PDAnnotationLink.SUB_TYPE:
+                    return new PDAnnotationLink(annotDic);
+                case PDAnnotationPopup.SUB_TYPE:
+                    return new PDAnnotationPopup(annotDic);
+                case PDAnnotationRubberStamp.SUB_TYPE:
+                    return new PDAnnotationRubberStamp(annotDic);
+                case PDAnnotationSquare.SUB_TYPE:
+                    return new PDAnnotationSquare(annotDic);
+                case PDAnnotationCircle.SUB_TYPE:
+                    return new PDAnnotationCircle(annotDic);
+                case PDAnnotationPolygon.SUB_TYPE:
+                    return new PDAnnotationPolygon(annotDic);
+                case PDAnnotationPolyline.SUB_TYPE:
+                    return new PDAnnotationPolyline(annotDic);
+                case PDAnnotationInk.SUB_TYPE:
+                    return new PDAnnotationInk(annotDic);
+                case PDAnnotationText.SUB_TYPE:
+                    return new PDAnnotationText(annotDic);
+                case PDAnnotationHighlight.SUB_TYPE:
+                    return new PDAnnotationHighlight(annotDic);
+                case PDAnnotationUnderline.SUB_TYPE:
+                    return new PDAnnotationUnderline(annotDic);
+                case PDAnnotationStrikeout.SUB_TYPE:
+                    return new PDAnnotationStrikeout(annotDic);
+                case PDAnnotationSquiggly.SUB_TYPE:
+                    return new PDAnnotationSquiggly(annotDic);
+                case PDAnnotationWidget.SUB_TYPE:
+                    return new PDAnnotationWidget(annotDic);
+                case PDAnnotationFreeText.SUB_TYPE:
+                    return new PDAnnotationFreeText(annotDic);
+                case PDAnnotationCaret.SUB_TYPE:
+                    return new PDAnnotationCaret(annotDic);
+                case PDAnnotationSound.SUB_TYPE:
+                    return new PDAnnotationSound(annotDic);
+                default:
+                    // TODO not yet implemented:
+                    // Movie, Screen, PrinterMark, TrapNet, Watermark, 3D, Redact
+                    LOG.debug("Unknown or unsupported annotation subtype {}", subtype);
+                    return new PDAnnotationUnknown(annotDic);
             }
         }
         else
         {
             throw new IOException("Error: Unknown annotation type " + base);
         }
-
-        return annot;
     }
 
     /**
@@ -418,6 +383,7 @@ public abstract class PDAnnotation imple
         }
         else
         {
+// PDAppearanceStream extends PDFormXObject, but does not reference the resource cache
             return normalAppearance.getAppearanceStream();
         }
     }