/*
- * 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.
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);
}
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
}
}
- /** 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);
* files
* @return how many files were copied
*/
+ @SuppressWarnings("resource")
public static Long copyFiles(Node fromNode, Node toNode, Boolean recursive,
ArgeoMonitor monitor) {
long count = 0l;