You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2012/03/17 11:41:16 UTC

svn commit: r1301914 [3/3] - in /pdfbox/trunk: preflight/src/main/java/org/apache/padaf/preflight/contentstream/ preflight/src/main/java/org/apache/padaf/preflight/font/ preflight/src/main/java/org/apache/padaf/preflight/utils/ xmpbox/src/main/java/org...

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ComplexPropertyContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ComplexPropertyContainer.java?rev=1301914&r1=1301913&r2=1301914&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ComplexPropertyContainer.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ComplexPropertyContainer.java Sat Mar 17 10:41:15 2012
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
+import org.w3c.dom.NodeList;
 
 
 /**
@@ -101,8 +102,7 @@ public class ComplexPropertyContainer ex
 	/**
 	 * Add a property to the current structure
 	 * 
-	 * @param obj
-	 *            the property to add
+	 * @param obj the property to add
 	 */
 	public void addProperty(AbstractField obj) {
 		if (containsProperty(obj)) {
@@ -196,7 +196,17 @@ public class ComplexPropertyContainer ex
 	public void removeProperty(AbstractField property) {
 		if (containsProperty(property)) {
 			properties.remove(property);
-			element.removeChild(property.getElement());
+			if (element.hasChildNodes()) {
+				NodeList nodes = element.getChildNodes();
+				boolean canRemove = false;
+				for (int i = 0; i < nodes.getLength(); ++i) {
+					if (nodes.item(i).equals(property.getElement())) {
+						canRemove = true;
+					}
+				}
+				// remove out of the loop to avoid concurrent exception
+				if (canRemove)element.removeChild(property.getElement());
+			}
 		}
 	}
 

Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/padaf/xmpbox/type/ComplexMetadataPropertyTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/padaf/xmpbox/type/ComplexMetadataPropertyTest.java?rev=1301914&r1=1301913&r2=1301914&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/padaf/xmpbox/type/ComplexMetadataPropertyTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/padaf/xmpbox/type/ComplexMetadataPropertyTest.java Sat Mar 17 10:41:15 2012
@@ -22,12 +22,9 @@
 package org.apache.padaf.xmpbox.type;
 
 
+import org.apache.padaf.xmpbox.SaveMetadataHelper;
 import org.apache.padaf.xmpbox.XMPMetadata;
 import org.apache.padaf.xmpbox.schema.XMPSchema;
-import org.apache.padaf.xmpbox.type.BadFieldValueException;
-import org.apache.padaf.xmpbox.type.ComplexProperty;
-import org.apache.padaf.xmpbox.type.ComplexPropertyContainer;
-import org.apache.padaf.xmpbox.type.TextType;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -125,7 +122,7 @@ public class ComplexMetadataPropertyTest
 		Assert.assertFalse(complexLi.containsProperty(li1));
 
 		tmpSchem.addProperty(complexLi);
-		// SaveMetadataHelper.serialize(metadata, true, System.out);
+//		SaveMetadataHelper.serialize(metadata, true, System.out);
 	}
 
 	/**