Optimize JCR mkdirs in case a node already exists
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jcr / src / main / java / org / argeo / jcr / JcrUtils.java
index 4e197d5fbcd2a65e30775c7515668f8ec45bbcba..d879c64fb287a7672ac317353eb3603978884944 100644 (file)
@@ -152,6 +152,19 @@ public class JcrUtils {
                        if (path.equals('/'))
                                return session.getRootNode();
 
+                       if (session.itemExists(path)) {
+                               Node node = session.getNode(path);
+                               // check type
+                               if (type != null
+                                               && !type.equals(node.getPrimaryNodeType().getName()))
+                                       throw new ArgeoException("Node " + node
+                                                       + " exists but is of type "
+                                                       + node.getPrimaryNodeType().getName()
+                                                       + " not of type " + type);
+                               // TODO: check versioning
+                               return node;
+                       }
+
                        StringTokenizer st = new StringTokenizer(path, "/");
                        StringBuffer current = new StringBuffer("/");
                        Node currentNode = session.getRootNode();