import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
import org.argeo.ArgeoMonitor;
import org.argeo.util.security.DigestUtils;
import org.argeo.util.security.SimplePrincipal;
* Queries one single node.
*
* @return one single node or null if none was found
- * @throws ArgeoException
+ * @throws ArgeoJcrException
* if more than one node was found
*/
public static Node querySingleNode(Query query) {
QueryResult queryResult = query.execute();
nodeIterator = queryResult.getNodes();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot execute query " + query, e);
+ throw new ArgeoJcrException("Cannot execute query " + query, e);
}
Node node;
if (nodeIterator.hasNext())
return null;
if (nodeIterator.hasNext())
- throw new ArgeoException("Query returned more than one node.");
+ throw new ArgeoJcrException("Query returned more than one node.");
return node;
}
if (path.equals("/"))
return "";
if (path.charAt(0) != '/')
- throw new ArgeoException("Path " + path + " must start with a '/'");
+ throw new ArgeoJcrException("Path " + path + " must start with a '/'");
String pathT = path;
if (pathT.charAt(pathT.length() - 1) == '/')
pathT = pathT.substring(0, pathT.length() - 2);
/** Retrieves the parent path of the provided path */
public static String parentPath(String path) {
if (path.equals("/"))
- throw new ArgeoException("Root path '/' has no parent path");
+ throw new ArgeoJcrException("Root path '/' has no parent path");
if (path.charAt(0) != '/')
- throw new ArgeoException("Path " + path + " must start with a '/'");
+ throw new ArgeoJcrException("Path " + path + " must start with a '/'");
String pathT = path;
if (pathT.charAt(pathT.length() - 1) == '/')
pathT = pathT.substring(0, pathT.length() - 2);
path.append(u.getPath());
return path.toString();
} catch (MalformedURLException e) {
- throw new ArgeoException("Cannot generate URL path for " + url, e);
+ throw new ArgeoJcrException("Cannot generate URL path for " + url, e);
}
}
node.setProperty(Property.JCR_PORT, Integer.toString(u.getPort()));
node.setProperty(Property.JCR_PATH, normalizePath(u.getPath()));
} catch (Exception e) {
- throw new ArgeoException("Cannot set URL " + url
+ throw new ArgeoJcrException("Cannot set URL " + url
+ " as nt:address properties", e);
}
}
.getProperty(Property.JCR_PATH).getString());
return u.toString();
} catch (Exception e) {
- throw new ArgeoException(
+ throw new ArgeoJcrException(
"Cannot get URL from nt:address properties of " + node, e);
}
}
calendar.setTime(date);
return calendar;
} catch (ParseException e) {
- throw new ArgeoException("Cannot parse " + value
+ throw new ArgeoJcrException("Cannot parse " + value
+ " with date format " + dateFormat, e);
}
/** The last element of a path. */
public static String lastPathElement(String path) {
if (path.charAt(path.length() - 1) == '/')
- throw new ArgeoException("Path " + path + " cannot end with '/'");
+ throw new ArgeoJcrException("Path " + path + " cannot end with '/'");
int index = path.lastIndexOf('/');
if (index < 0)
return path;
try {
return node.getName();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get name from " + node, e);
+ throw new ArgeoJcrException("Cannot get name from " + node, e);
}
}
try {
return node.getProperty(propertyName).getString();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get name from " + node, e);
+ throw new ArgeoJcrException("Cannot get name from " + node, e);
}
}
return null;
return node.getProperty(propertyName).getString();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get property " + propertyName
+ throw new ArgeoJcrException("Cannot get property " + propertyName
+ " of " + node, e);
}
}
try {
return node.getProperty(propertyName).getBoolean();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get property " + propertyName
+ throw new ArgeoJcrException("Cannot get property " + propertyName
+ " of " + node, e);
}
}
try {
return getBinaryAsBytes(node.getProperty(propertyName));
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get property " + propertyName
+ throw new ArgeoJcrException("Cannot get property " + propertyName
+ " of " + node, e);
}
}
}
return currParent;
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot mkdirs relative path "
+ throw new ArgeoJcrException("Cannot mkdirs relative path "
+ relativePath + " from " + parentNode, e);
}
}
String type) {
try {
if (session.hasPendingChanges())
- throw new ArgeoException(
+ throw new ArgeoJcrException(
"Session has pending changes, save them first.");
Node node = mkdirs(session, path, type);
session.save();
return node;
} catch (RepositoryException e) {
discardQuietly(session);
- throw new ArgeoException("Cannot safely make directories", e);
+ throw new ArgeoJcrException("Cannot safely make directories", e);
}
}
// check type
if (type != null && !node.isNodeType(type)
&& !node.getPath().equals("/"))
- throw new ArgeoException("Node " + node
+ throw new ArgeoJcrException("Node " + node
+ " exists but is of type "
+ node.getPrimaryNodeType().getName()
+ " not of type " + type);
return currentNode;
} catch (RepositoryException e) {
discardQuietly(session);
- throw new ArgeoException("Cannot mkdirs " + path, e);
+ throw new ArgeoJcrException("Cannot mkdirs " + path, e);
} finally {
}
}
registerNamespaceSafely(session.getWorkspace()
.getNamespaceRegistry(), prefix, uri);
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot find namespace registry", e);
+ throw new ArgeoJcrException("Cannot find namespace registry", e);
}
}
if (pref.equals(prefix)) {
String registeredUri = nr.getURI(pref);
if (!registeredUri.equals(uri))
- throw new ArgeoException("Prefix " + pref
+ throw new ArgeoJcrException("Prefix " + pref
+ " already registered for URI "
+ registeredUri
+ " which is different from provided URI "
}
nr.registerNamespace(prefix, uri);
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot register namespace " + uri
+ throw new ArgeoJcrException("Cannot register namespace " + uri
+ " under prefix " + prefix, e);
}
}
}
return buf.toString();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot write summary of " + acl, e);
+ throw new ArgeoJcrException("Cannot write summary of " + acl, e);
}
}
copy(fromChild, toChild);
}
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot copy " + fromNode + " to "
+ throw new ArgeoJcrException("Cannot copy " + fromNode + " to "
+ toNode, e);
}
}
}
return true;
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot check all properties equals of "
+ throw new ArgeoJcrException("Cannot check all properties equals of "
+ reference + " and " + observed, e);
}
}
}
}
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot diff " + reference + " and "
+ throw new ArgeoJcrException("Cannot diff " + reference + " and "
+ observed, e);
}
}
}
}
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot diff " + reference + " and "
+ throw new ArgeoJcrException("Cannot diff " + reference + " and "
+ observed, e);
}
return diffs;
IOUtils.copy(in, out);
return out.toByteArray();
} catch (Exception e) {
- throw new ArgeoException("Cannot read binary " + property
+ throw new ArgeoJcrException("Cannot read binary " + property
+ " as bytes", e);
} finally {
IOUtils.closeQuietly(out);
binary = node.getSession().getValueFactory().createBinary(in);
node.setProperty(property, binary);
} catch (Exception e) {
- throw new ArgeoException("Cannot read binary " + property
+ throw new ArgeoJcrException("Cannot read binary " + property
+ " as bytes", e);
} finally {
IOUtils.closeQuietly(in);
*/
public static String firstCharsToPath(String str, Integer nbrOfChars) {
if (str.length() < nbrOfChars)
- throw new ArgeoException("String " + str
+ throw new ArgeoJcrException("String " + str
+ " length must be greater or equal than " + nbrOfChars);
StringBuffer path = new StringBuffer("");
StringBuffer curr = new StringBuffer("");
nodeType == null ? null : new String[] { nodeType },
true);
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot add JCR listener " + listener
+ throw new ArgeoJcrException("Cannot add JCR listener " + listener
+ " to session " + session, e);
}
}
node.setProperty(Property.JCR_LAST_MODIFIED_BY, node.getSession()
.getUserID());
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot update last modified on " + node,
+ throw new ArgeoJcrException("Cannot update last modified on " + node,
e);
}
}
public static void updateLastModifiedAndParents(Node node, String untilPath) {
try {
if (untilPath != null && !node.getPath().startsWith(untilPath))
- throw new ArgeoException(node + " is not under " + untilPath);
+ throw new ArgeoJcrException(node + " is not under " + untilPath);
updateLastModified(node);
if (untilPath == null) {
if (!node.getPath().equals("/"))
updateLastModifiedAndParents(node.getParent(), untilPath);
}
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot update lastModified from " + node
+ throw new ArgeoJcrException("Cannot update lastModified from " + node
+ " until " + untilPath, e);
}
}
if (prop.getDefinition().isMultiple())
sbuf.append("*");
} catch (RepositoryException re) {
- throw new ArgeoException(
+ throw new ArgeoJcrException(
"unexpected error while getting property definition as String",
re);
}
curNodeSize += getNodeApproxSize(ni.nextNode());
return curNodeSize;
} catch (RepositoryException re) {
- throw new ArgeoException(
+ throw new ArgeoJcrException(
"Unexpected error while recursively determining node size.",
re);
}
if (acl != null)
return acl;
else
- throw new ArgeoException("ACL not found at " + path);
+ throw new ArgeoJcrException("ACL not found at " + path);
}
/** Clear authorizations for a user at this path */
* files
* @return how many files were copied
*/
+ @SuppressWarnings("deprecation")
public static Long copyFiles(Node fromNode, Node toNode, Boolean recursive,
ArgeoMonitor monitor) {
long count = 0l;
NodeIterator fromChildren = fromNode.getNodes();
while (fromChildren.hasNext()) {
if (monitor != null && monitor.isCanceled())
- throw new ArgeoException(
+ throw new ArgeoJcrException(
"Copy cancelled before it was completed");
Node fromChild = fromChildren.nextNode();
if (toNode.hasNode(fileName)) {
toChildFolder = toNode.getNode(fileName);
if (!toChildFolder.isNodeType(NodeType.NT_FOLDER))
- throw new ArgeoException(toChildFolder
+ throw new ArgeoJcrException(toChildFolder
+ " is not of type nt:folder");
} else {
toChildFolder = toNode.addNode(fileName,
}
return count;
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot copy files between " + fromNode
+ throw new ArgeoJcrException("Cannot copy files between " + fromNode
+ " and " + toNode);
} finally {
// in case there was an exception
localCount = localCount + 1;
}
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot count all children of " + node);
+ throw new ArgeoJcrException("Cannot count all children of " + node);
}
return localCount;
}
in = new FileInputStream(file);
return copyStreamAsFile(folderNode, file.getName(), in);
} catch (IOException e) {
- throw new ArgeoException("Cannot copy file " + file + " under "
+ throw new ArgeoJcrException("Cannot copy file " + file + " under "
+ folderNode, e);
} finally {
IOUtils.closeQuietly(in);
in = new ByteArrayInputStream(bytes);
return copyStreamAsFile(folderNode, fileName, in);
} catch (Exception e) {
- throw new ArgeoException("Cannot copy file " + fileName + " under "
+ throw new ArgeoJcrException("Cannot copy file " + fileName + " under "
+ folderNode, e);
} finally {
IOUtils.closeQuietly(in);
if (folderNode.hasNode(fileName)) {
fileNode = folderNode.getNode(fileName);
if (!fileNode.isNodeType(NodeType.NT_FILE))
- throw new ArgeoException(fileNode
+ throw new ArgeoJcrException(fileNode
+ " is not of type nt:file");
// we assume that the content node is already there
contentNode = fileNode.getNode(Node.JCR_CONTENT);
contentNode.setProperty(Property.JCR_DATA, binary);
return fileNode;
} catch (Exception e) {
- throw new ArgeoException("Cannot create file node " + fileName
+ throw new ArgeoJcrException("Cannot create file node " + fileName
+ " under " + folderNode, e);
} finally {
closeQuietly(binary);
in = data.getStream();
return DigestUtils.digest(algorithm, in);
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot checksum file " + fileNode, e);
+ throw new ArgeoJcrException("Cannot checksum file " + fileNode, e);
} finally {
IOUtils.closeQuietly(in);
closeQuietly(data);