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/03/04 18:53:00 UTC
svn commit: r1733624 - in
/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type:
AbstractComplexProperty.java ComplexPropertyContainer.java
Author: tilman
Date: Fri Mar 4 17:53:00 2016
New Revision: 1733624
URL: http://svn.apache.org/viewvc?rev=1733624&view=rev
Log:
PDFBOX-3258: keep non-list properties unique
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractComplexProperty.java
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/ComplexPropertyContainer.java
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractComplexProperty.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractComplexProperty.java?rev=1733624&r1=1733623&r2=1733624&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractComplexProperty.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractComplexProperty.java Fri Mar 4 17:53:00 2016
@@ -64,6 +64,16 @@ public abstract class AbstractComplexPro
*/
public final void addProperty(AbstractField obj)
{
+ // https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/cs6/XMPSpecificationPart1.pdf
+ // "Each property name in an XMP packet shall be unique within that packet"
+ // "Multiple values are represented using an XMP array value"
+ // "The nested elementââ¬â¢s element content shall consist of zero or more rdf:li elements,
+ // one for each item in the array"
+ // thus delete existing elements of a property, except for arrays ("li")
+ if (!(this instanceof ArrayProperty))
+ {
+ container.removePropertiesByName(obj.getPropertyName());
+ }
container.addProperty(obj);
}
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/ComplexPropertyContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/ComplexPropertyContainer.java?rev=1733624&r1=1733623&r2=1733624&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/ComplexPropertyContainer.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/ComplexPropertyContainer.java Fri Mar 4 17:53:00 2016
@@ -194,4 +194,26 @@ public class ComplexPropertyContainer
properties.remove(property);
}
}
+
+ /**
+ * Remove all properties with a specified LocalName.
+ *
+ * @param localName The name for which to remove all.
+ */
+ public void removePropertiesByName(String localName)
+ {
+ if (properties.isEmpty())
+ {
+ return;
+ }
+ List<AbstractField> propList = getPropertiesByLocalName(localName);
+ if (propList == null)
+ {
+ return;
+ }
+ for (AbstractField field : propList)
+ {
+ properties.remove(field);
+ }
+ }
}