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


Reply via email to