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); } /**
