You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/05/15 01:29:16 UTC

svn commit: r1679476 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form: PDButton.java PDField.java PDRadioButton.java PDTextField.java PDVariableText.java

Author: jahewson
Date: Thu May 14 23:29:15 2015
New Revision: 1679476

URL: http://svn.apache.org/r1679476
Log:
PDFBOX-2459: Set and removing inherited attributes isn't meaningful

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.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/PDRadioButton.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java Thu May 14 23:29:15 2015
@@ -188,14 +188,7 @@ public abstract class PDButton extends P
      */
     public void setOptions(List<String> values)
     {
-        if (values == null || values.isEmpty())
-        {
-            removeInheritableAttribute(COSName.OPT);            
-        }
-        else
-        {
-            setInheritableAttribute(COSName.OPT, COSArrayList.convertStringListToCOSStringCOSArray(values));
-        }
+        dictionary.setItem(COSName.OPT, COSArrayList.convertStringListToCOSStringCOSArray(values));
     }
 
     @Override

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=1679476&r1=1679475&r2=1679476&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 Thu May 14 23:29:15 2015
@@ -79,29 +79,6 @@ public abstract class PDField implements
         this.dictionary = field;
         this.parent = parent;
     }
-
-    /**
-     * Returns the node in the field tree from which a specific attribute might be inherited.
-     *
-     * @param field the field from which to look for the attribute
-     * @param key the key to look for
-     * @return PDFieldTreeNode the node from which the attribute will be inherited or null
-     */    
-    public PDField getInheritableAttributesNode(PDField field, COSName key)
-    {
-        if (field.dictionary.containsKey(key))
-        {
-            return field;
-        }
-        else
-        {
-            if (field.parent != null)
-            {
-                getInheritableAttributesNode(field.parent, key);
-            }
-        }
-        return null;
-    }
     
     /**
      * Returns the given attribute, inheriting from parent nodes if necessary.
@@ -111,56 +88,19 @@ public abstract class PDField implements
      */
     protected COSBase getInheritableAttribute(COSName key)
     {
-        PDField attributesNode = getInheritableAttributesNode(this, key);
-        if (attributesNode != null)
+        if (dictionary.containsKey(key))
         {
-            return attributesNode.dictionary.getDictionaryObject(key);
+            return dictionary.getDictionaryObject(key);
         }
-        else
+        else if (parent != null)
         {
-            return acroForm.getCOSObject().getDictionaryObject(key);
+            return parent.getInheritableAttribute(key);
         }
-    }    
-    
-    /**
-     * Sets the given attribute, inheriting from parent nodes if necessary.
-     *
-     * @param key the key to look up
-     * @param value the new attributes value
-     */
-    protected void setInheritableAttribute(COSName key, COSBase value)
-    {
-        if (value == null)
-        {
-            removeInheritableAttribute(key);
-        } 
-        else 
-        {
-            PDField attributesNode = getInheritableAttributesNode(this, key);
-            if (attributesNode != null)
-            {
-                attributesNode.dictionary.setItem(key, value);
-            } 
-            else
-            {
-                dictionary.setItem(key, value);
-            }
-        }
-    }  
-    
-    /**
-     * Removes the given attribute, inheriting from parent nodes if necessary.
-     *
-     * @param key the key to look up
-     */
-    protected void removeInheritableAttribute(COSName key)
-    {
-        PDField attributesNode = getInheritableAttributesNode(this, key);
-        if (attributesNode != null)
+        else
         {
-            attributesNode.dictionary.removeItem(key);
+            return acroForm.getCOSObject().getDictionaryObject(key);
         }
-    }      
+    }
     
     /**
      * Get a text as text stream.

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java Thu May 14 23:29:15 2015
@@ -152,30 +152,23 @@ public final class PDRadioButton extends
     @Override
     public void setValue(String fieldValue)
     {
-        if (fieldValue == null)
+        COSName nameForValue = COSName.getPDFName(fieldValue);
+        dictionary.setItem(COSName.V, nameForValue);
+        List<COSObjectable> kids = getKids();
+        for (COSObjectable kid : kids)
         {
-            removeInheritableAttribute(COSName.V);
-        }
-        else
-        {
-            COSName nameForValue = COSName.getPDFName(fieldValue);
-            setInheritableAttribute(COSName.V, nameForValue);
-            List<COSObjectable> kids = getKids();
-            for (COSObjectable kid : kids)
+            if (kid instanceof PDAnnotationWidget)
             {
-                if (kid instanceof PDAnnotationWidget)
+                PDAppearanceEntry appearanceEntry = ((PDAnnotationWidget) kid).getAppearance()
+                        .getNormalAppearance();
+
+                if (((COSDictionary) appearanceEntry.getCOSObject()).containsKey(nameForValue))
+                {
+                    ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, fieldValue);
+                }
+                else
                 {
-                    PDAppearanceEntry appearanceEntry = ((PDAnnotationWidget) kid).getAppearance()
-                            .getNormalAppearance();
-                    
-                    if (((COSDictionary) appearanceEntry.getCOSObject()).containsKey(nameForValue))
-                    {
-                        ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, fieldValue);
-                    }
-                    else
-                    {
-                        ((COSDictionary) kid.getCOSObject()).setItem(COSName.AS, COSName.OFF);
-                    }
+                    ((COSDictionary) kid.getCOSObject()).setItem(COSName.AS, COSName.OFF);
                 }
             }
         }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java Thu May 14 23:29:15 2015
@@ -210,15 +210,8 @@ public final class PDTextField extends P
     @Override
     public void setDefaultValue(String value)
     {
-        if (value != null)
-        {
-            COSString fieldValue = new COSString(value);
-            setInheritableAttribute(COSName.DV, fieldValue);
-        }  
-        else
-        {
-            removeInheritableAttribute(COSName.DV);
-        }
+        COSString fieldValue = new COSString(value);
+        dictionary.setItem(COSName.DV, fieldValue);
     }
     
     @Override
@@ -235,15 +228,7 @@ public final class PDTextField extends P
     @Override
     public void setValue(String value) throws IOException
     {
-        if (value != null && !value.isEmpty())
-        {
-            COSString fieldValue = new COSString(value);
-            setInheritableAttribute(COSName.V, fieldValue);
-        }  
-        else
-        {
-            removeInheritableAttribute(COSName.V);
-        }
+        dictionary.setItem(COSName.V, new COSString(value));
         applyChange();
     }
     

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java Thu May 14 23:29:15 2015
@@ -85,14 +85,7 @@ public abstract class PDVariableText ext
      */
     public void setDefaultAppearance(String daValue)
     {
-        if (daValue != null)
-        {
-            setInheritableAttribute(COSName.DA, new COSString(daValue));
-        }
-        else
-        {
-            removeInheritableAttribute(COSName.DA);
-        }
+        dictionary.setItem(COSName.DA, new COSString(daValue));
     }
     
     /**