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;