You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2015/10/09 09:07:05 UTC

svn commit: r1707668 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form: PDAcroForm.java PDField.java PDNonTerminalField.java PDTerminalField.java

Author: msahyoun
Date: Fri Oct  9 07:07:04 2015
New Revision: 1707668

URL: http://svn.apache.org/viewvc?rev=1707668&view=rev
Log:
PDFBOX-3012: avoid ClassCastException in flatten()

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java?rev=1707668&r1=1707667&r2=1707668&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java Fri Oct  9 07:07:04 2015
@@ -175,7 +175,7 @@ public final class PDAcroForm implements
         // FormXObject at the page content level from that
         for (PDField field : getFieldTree())
         {
-            for (PDAnnotationWidget widget : ((PDTerminalField)field).getWidgets())
+            for (PDAnnotationWidget widget : field.getWidgets())
             {
                 if (widget.getNormalAppearanceStream() != null)
                 {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java?rev=1707668&r1=1707667&r2=1707668&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java Fri Oct  9 07:07:04 2015
@@ -17,6 +17,8 @@
 package org.apache.pdfbox.pdmodel.interactive.form;
 
 import java.io.IOException;
+import java.util.List;
+
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -24,6 +26,7 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.fdf.FDFField;
 import org.apache.pdfbox.pdmodel.interactive.action.PDFormFieldAdditionalActions;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
 
 /**
  * A field in an interactive form.
@@ -108,11 +111,21 @@ public abstract class PDField implements
     /**
      * Returns a string representation of the "V" entry, or an empty string.
      * 
-     * @return A non-null string.
+     * @return The list of widget annotations.
      */
     public abstract String getValueAsString();
     
     /**
+     * Returns the widget annotations associated with this field.
+     * 
+     * For {@link PDNonTerminalField} the list will be empty as non terminal fields
+     * have no visual representation in the form.
+     * 
+     * @return A non-null string.
+     */
+    public abstract List<PDAnnotationWidget> getWidgets();
+    
+    /**
      * sets the field to be read-only.
      * 
      * @param readonly The new flag for readonly.

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java?rev=1707668&r1=1707667&r2=1707668&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java Fri Oct  9 07:07:04 2015
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel.intera
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
@@ -27,6 +28,7 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.fdf.FDFField;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
 
 /**
  * A non terminal field in an interactive form.
@@ -222,4 +224,10 @@ public class PDNonTerminalField extends
     {
         getCOSObject().setItem(COSName.V, value);
     }
+    
+    @Override
+    public List<PDAnnotationWidget> getWidgets()
+    {
+        return Collections.emptyList();
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java?rev=1707668&r1=1707667&r2=1707668&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java Fri Oct  9 07:07:04 2015
@@ -158,6 +158,7 @@ public abstract class PDTerminalField ex
      * 
      * @return The list of widget annotations.
      */
+    @Override
     public List<PDAnnotationWidget> getWidgets()
     {
         List<PDAnnotationWidget> widgets = new ArrayList<PDAnnotationWidget>();