Author: rombert
Date: Fri Sep 13 15:28:03 2013
New Revision: 1522974

URL: http://svn.apache.org/r1522974
Log:
SLING-2989 - [Tooling] integrate with vlt once available

Implement property removal

Modified:
    
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java?rev=1522974&r1=1522973&r2=1522974&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
 Fri Sep 13 15:28:03 2013
@@ -19,11 +19,14 @@ package org.apache.sling.ide.impl.vlt;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Calendar;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import javax.jcr.Credentials;
 import javax.jcr.Node;
 import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -51,6 +54,14 @@ public class UpdateNodePropertiesCommand
     protected Void execute0(Session session) throws RepositoryException, 
IOException {
 
         Node node = session.getNode(getPath());
+        
+        Set<String> propertiesToRemove = new HashSet<String>();
+        PropertyIterator properties = node.getProperties();
+        while ( properties.hasNext()) {
+            propertiesToRemove.add(properties.nextProperty().getName());
+        }
+        
+        propertiesToRemove.removeAll(serializationData.keySet());
 
         // TODO - review for completeness and filevault compatibility
         for (Map.Entry<String, Object> entry : serializationData.entrySet()) {
@@ -92,6 +103,14 @@ public class UpdateNodePropertiesCommand
                         + entry.getValue().getClass().getName() + "' for 
property '" + entry.getKey() + "'");
             }
         }
+        
+        for ( String propertyToRemove : propertiesToRemove ) {
+            Property prop = node.getProperty(propertyToRemove);
+            if (prop.getDefinition().isProtected()) {
+                continue;
+            }
+            prop.remove();
+        }
 
         return null;
 


Reply via email to