Author: stefanegli
Date: Tue Sep 17 15:42:00 2013
New Revision: 1524097
URL: http://svn.apache.org/r1524097
Log:
SLING-2989: support for deep .content.xml structure added
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=1524097&r1=1524096&r2=1524097&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
Tue Sep 17 15:42:00 2013
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -39,20 +40,44 @@ import org.apache.sling.ide.transport.Re
public class UpdateNodePropertiesCommand extends JcrCommand<Void> {
- private final Map<String, Object> serializationData;
+ private ResourceProxy resource;
- public UpdateNodePropertiesCommand(Repository jcrRepo, Credentials
credentials, FileInfo fileInfo,
+ public UpdateNodePropertiesCommand(Repository jcrRepo, Credentials
credentials, FileInfo fileInfo,
ResourceProxy resource) {
super(jcrRepo, credentials, resource.getPath());
-
- this.serializationData = resource.getProperties();
+
+ this.resource = resource;
}
@Override
protected Void execute0(Session session) throws RepositoryException,
IOException {
- Node node = session.getNode(getPath());
+ update(resource, session);
+ return null;
+ }
+
+ private void update(ResourceProxy resource, Session session) throws
RepositoryException, IOException {
+ String resPath = resource.getPath();
+ updatePath(resPath, resource.getProperties(), session);
+ Iterator<ResourceProxy> it = resource.getChildren().iterator();
+ while(it.hasNext()) {
+ update(it.next(), session);
+ }
+ }
+
+ private void updatePath(final String path, final Map<String, Object>
serializationData, final Session session) throws RepositoryException,
IOException {
+ if (!session.nodeExists(path)) {
+ // then create the node
+ Object primaryType =
serializationData.get("jcr:primaryType");
+ String relPath = path.startsWith("/") ?
path.substring(1) : path;
+ if (primaryType!=null) {
+ session.getRootNode().addNode(relPath,
String.valueOf(primaryType));
+ } else {
+ session.getRootNode().addNode(relPath);
+ }
+ }
+ Node node = session.getNode(path);
Set<String> propertiesToRemove = new HashSet<String>();
PropertyIterator properties = node.getProperties();
@@ -168,8 +193,6 @@ public class UpdateNodePropertiesCommand
prop.remove();
}
- return null;
-
}
private Value[] toValueArray(String[] strings, Session session) throws
RepositoryException {