From: Mathieu Baudier Date: Thu, 13 Jan 2011 20:12:28 +0000 (+0000) Subject: Optimize JCR mkdirs in case a node already exists X-Git-Tag: argeo-commons-2.1.30~1528 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=b688a5a11f8f6d81b6985a7e6ff2895df27084f5;p=lgpl%2Fargeo-commons.git Optimize JCR mkdirs in case a node already exists git-svn-id: https://svn.argeo.org/commons/trunk@4024 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrUtils.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrUtils.java index 4e197d5fb..d879c64fb 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrUtils.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrUtils.java @@ -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();