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 2020/06/05 14:57:32 UTC

svn commit: r1878515 - in /pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight: metadata/UniquePropertiesValidation.java process/MetadataValidationProcess.java

Author: tilman
Date: Fri Jun  5 14:57:32 2020
New Revision: 1878515

URL: http://svn.apache.org/viewvc?rev=1878515&view=rev
Log:
PDFBOX-4860: check uniqueness of certain properties

Added:
    pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java
      - copied, changed from r1878494, pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java
Modified:
    pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java

Copied: pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java (from r1878494, pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java)
URL: http://svn.apache.org/viewvc/pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java?p2=pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java&r1=1878494&r2=1878515&rev=1878515&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java (original)
+++ pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/UniquePropertiesValidation.java Fri Jun  5 14:57:32 2020
@@ -32,6 +32,7 @@ import org.apache.xmpbox.schema.AdobePDF
 import org.apache.xmpbox.schema.DublinCoreSchema;
 import org.apache.xmpbox.schema.XMPBasicSchema;
 import org.apache.xmpbox.schema.XMPSchema;
+import org.apache.xmpbox.type.AbstractField;
 
 /**
  * Class which checks that certain metadata properties are unique, see PDFBOX-4860.
@@ -53,7 +54,7 @@ public class UniquePropertiesValidation
     public List<ValidationResult.ValidationError> validatePropertiesUniqueness(PDDocument document, XMPMetadata metadata)
             throws ValidationException
     {
-        List<ValidationResult.ValidationError> ve = new ArrayList<>();
+        List<ValidationResult.ValidationError> ve = new ArrayList<ValidationResult.ValidationError>();
 
         if (document == null)
         {
@@ -82,11 +83,19 @@ public class UniquePropertiesValidation
         {
             return;
         }
-        if (schema.getAllProperties().stream().
-                filter(field -> propertyName.equals(field.getPropertyName())).count() > 1)
+        int count = 0;
+        for (AbstractField field : schema.getAllProperties())
+        {
+            if (propertyName.equals(field.getPropertyName()))
+            {
+                ++count;
+            }
+        }
+        if (count > 1)
         {
             ve.add(new ValidationError(PreflightConstants.ERROR_METADATA_PROPERTY_FORMAT,
-                    propertyName + " property is not unique in schema " + schema.getNamespace()));
+                    "property '" + schema.getPrefix() + ":" + propertyName +
+                    "' occurs multiple times"));
         }
     }
 }

Modified: pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java?rev=1878515&r1=1878514&r2=1878515&view=diff
==============================================================================
--- pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java (original)
+++ pdfbox/branches/issue45/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java Fri Jun  5 14:57:32 2020
@@ -29,10 +29,7 @@ import java.util.ArrayList;
 import java.util.List;
 import javax.imageio.ImageIO;
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
@@ -45,8 +42,8 @@ import org.apache.pdfbox.preflight.metad
 import org.apache.pdfbox.preflight.metadata.RDFAboutAttributeConcordanceValidation;
 import org.apache.pdfbox.preflight.metadata.RDFAboutAttributeConcordanceValidation.DifferentRDFAboutException;
 import org.apache.pdfbox.preflight.metadata.SynchronizedMetaDataValidation;
+import org.apache.pdfbox.preflight.metadata.UniquePropertiesValidation;
 import org.apache.pdfbox.preflight.metadata.XpacketParsingException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.util.Hex;
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.schema.XMPBasicSchema;
@@ -90,6 +87,10 @@ public class MetadataValidationProcess e
             addValidationErrors(ctx,
                     new SynchronizedMetaDataValidation().validateMetadataSynchronization(document, metadata));
 
+            // Call metadata uniqueness checking
+            addValidationErrors(ctx,
+                    new UniquePropertiesValidation().validatePropertiesUniqueness(document, metadata));
+
             // Call PDF/A Identifier checking
             addValidationErrors(ctx, new PDFAIdentificationValidation().validatePDFAIdentifer(metadata));