X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2FJcrUtils.java;h=8792a36de3aeb3e79d02f2376c68aaf9baee4660;hb=3c169a3fd8516288d846d53652b873a0d7dab2fc;hp=274d149dcd8c3d5dc1a39f843bf73423f2981e90;hpb=460170049599090170c48ae447c6c68f1fcb2f63;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java index 274d149dc..8792a36de 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java @@ -10,6 +10,8 @@ import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Value; +import javax.jcr.query.Query; +import javax.jcr.query.QueryResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -18,6 +20,31 @@ import org.argeo.ArgeoException; public class JcrUtils { private final static Log log = LogFactory.getLog(JcrUtils.class); + public static Node querySingleNode(Query query) { + NodeIterator nodeIterator; + try { + QueryResult queryResult = query.execute(); + nodeIterator = queryResult.getNodes(); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot execute query " + query, e); + } + Node node; + if (nodeIterator.hasNext()) + node = nodeIterator.nextNode(); + else + return null; + + if (nodeIterator.hasNext()) + throw new ArgeoException("Query returned more than one node."); + return node; + } + + public static String removeForbiddenCharacters(String str){ + return str.replace('[', '_').replace(']', '_') + .replace('/', '_').replace('*', '_'); + + } + public static String parentPath(String path) { if (path.equals("/")) throw new ArgeoException("Root path '/' has no parent path"); @@ -49,11 +76,17 @@ public class JcrUtils { } + public static String hostAsPath(String host) { + // TODO : inverse order of the elements (to have org/argeo/test IO + // test/argeo/org + return host.replace('.', '/'); + } + public static String lastPathElement(String path) { if (path.charAt(path.length() - 1) == '/') throw new ArgeoException("Path " + path + " cannot end with '/'"); int index = path.lastIndexOf('/'); - if (index <= 0) + if (index < 0) throw new ArgeoException("Cannot find last path element for " + path); return path.substring(index + 1); @@ -113,6 +146,8 @@ public class JcrUtils { // Then output the properties PropertyIterator properties = node.getProperties(); + //log.debug("Property are : "); + while (properties.hasNext()) { Property property = properties.nextProperty(); if (property.getDefinition().isMultiple()) {