Optimize JCR mkdirs in case a node already exists
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 13 Jan 2011 20:12:28 +0000 (20:12 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 13 Jan 2011 20:12:28 +0000 (20:12 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4024 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

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();