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 2016/10/09 17:40:04 UTC
svn commit: r1763996 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: tilman
Date: Sun Oct 9 17:40:04 2016
New Revision: 1763996
URL: http://svn.apache.org/viewvc?rev=1763996&view=rev
Log:
PDFBOX-2852, PDFBOX-3017: "do one thing" refactoring of checkSignatureField()
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1763996&r1=1763995&r2=1763996&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Sun Oct 9 17:40:04 2016
@@ -313,6 +313,14 @@ public class PDDocument implements Close
acroForm.setAppendOnly(true);
boolean checkFields = checkSignatureField(acroFormFields, signatureField);
+ if (checkFields)
+ {
+ signatureField.getCOSObject().setNeedToBeUpdated(true);
+ }
+ else
+ {
+ acroFormFields.add(signatureField);
+ }
// Get the object from the visual signature
COSDocument visualSignature = options.getVisualSignature();
@@ -364,26 +372,25 @@ public class PDDocument implements Close
return signatureField;
}
- // return true if the field already existed in the field list, in that case, it is marked for update
+ /**
+ * Check if the field already exists in the field list.
+ *
+ * @param acroFormFields the list of AcroForm fields.
+ * @param signatureField the signature field.
+ * @return true if the field already existed in the field list, false if not.
+ */
private boolean checkSignatureField(List<PDField> acroFormFields, PDSignatureField signatureField)
{
- boolean checkFields = false;
for (PDField field : acroFormFields)
{
if (field instanceof PDSignatureField
&& field.getCOSObject().equals(signatureField.getCOSObject()))
{
- checkFields = true;
- signatureField.getCOSObject().setNeedToBeUpdated(true);
- break;
+ return true;
}
// fixme: this code does not check non-terminal fields, there could be a descendant signature
}
- if (!checkFields)
- {
- acroFormFields.add(signatureField);
- }
- return checkFields;
+ return false;
}
private void prepareVisibleSignature(PDSignatureField signatureField, PDAcroForm acroForm,
@@ -469,7 +476,7 @@ public class PDDocument implements Close
}
/**
- * This will add a signature field to the document.
+ * This will add a list of signature fields to the document.
*
* @param sigFields are the PDSignatureFields that should be added to the document
* @param signatureInterface is a interface which provides signing capabilities
@@ -504,7 +511,15 @@ public class PDDocument implements Close
sigField.getCOSObject().setNeedToBeUpdated(true);
// Check if the field already exists
- checkSignatureField(acroformFields, sigField);
+ boolean checkSignatureField = checkSignatureField(acroformFields, sigField);
+ if (checkSignatureField)
+ {
+ sigField.getCOSObject().setNeedToBeUpdated(true);
+ }
+ else
+ {
+ acroformFields.add(sigField);
+ }
// Check if we need to add a signature
if (sigField.getSignature() != null)