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;