X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2FJcrUtils.java;h=2176e757cacac3141eb2e7c90a39302e085e0a8b;hb=3a3d316af102ba410d1d9e6de349d0c8f7ac044f;hp=bcb13b4381e37d67cd536b74d3a24739eaef5be1;hpb=82fc1287c13e9bd42b96af762a1c0f1549c82a4f;p=lgpl%2Fargeo-commons.git 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 bcb13b438..2176e757c 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 @@ -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;