]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrUtils.java
Add dep folder
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jcr / src / main / java / org / argeo / jcr / JcrUtils.java
index bcb13b4381e37d67cd536b74d3a24739eaef5be1..2176e757cacac3141eb2e7c90a39302e085e0a8b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2012 Mathieu Baudier
+ * Copyright (C) 2007-2012 Argeo GmbH
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -300,8 +300,7 @@ public class JcrUtils implements ArgeoJcrConstants {
                        throw new ArgeoException("Path " + path + " cannot end with '/'");
                int index = path.lastIndexOf('/');
                if (index < 0)
-                       throw new ArgeoException("Cannot find last path element for "
-                                       + path);
+                       return path;
                return path.substring(index + 1);
        }
 
@@ -445,7 +444,7 @@ public class JcrUtils implements ArgeoJcrConstants {
                try {
                        for (int i = 0; i < tokens.size(); i++) {
                                String name = tokens.get(i);
-                               if (parentNode.hasNode(name)) {
+                               if (currParent.hasNode(name)) {
                                        currParent = currParent.getNode(name);
                                } else {
                                        if (i != (tokens.size() - 1)) {// intermediary
@@ -1208,14 +1207,26 @@ public class JcrUtils implements ArgeoJcrConstants {
                }
        }
 
-       /** Update lastModified recursively until this parent. */
+       /**
+        * Update lastModified recursively until this parent.
+        * 
+        * @param node
+        *            the node
+        * @param untilPath
+        *            the base path, null is equivalent to "/"
+        */
        public static void updateLastModifiedAndParents(Node node, String untilPath) {
                try {
-                       if (!node.getPath().startsWith(untilPath))
+                       if (untilPath != null && !node.getPath().startsWith(untilPath))
                                throw new ArgeoException(node + " is not under " + untilPath);
                        updateLastModified(node);
-                       if (!node.getPath().equals(untilPath))
-                               updateLastModifiedAndParents(node.getParent(), untilPath);
+                       if (untilPath == null) {
+                               if (!node.getPath().equals("/"))
+                                       updateLastModifiedAndParents(node.getParent(), untilPath);
+                       } else {
+                               if (!node.getPath().equals(untilPath))
+                                       updateLastModifiedAndParents(node.getParent(), untilPath);
+                       }
                } catch (RepositoryException e) {
                        throw new ArgeoException("Cannot update lastModified from " + node
                                        + " until " + untilPath, e);
@@ -1404,6 +1415,7 @@ public class JcrUtils implements ArgeoJcrConstants {
         *            files
         * @return how many files were copied
         */
+       @SuppressWarnings("resource")
        public static Long copyFiles(Node fromNode, Node toNode, Boolean recursive,
                        ArgeoMonitor monitor) {
                long count = 0l;