X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2FJcrUtils.java;h=3e7c8737403ed969378e9c93972508abea85293b;hb=5ec9d72c96b13bf18d702bf01dc2c03b0aee43a4;hp=158b52a8f270ace93b58e8e1a4083a686d94cdbf;hpb=1d5ef69cc76d286d59de4f02d90196ca52cbe0f3;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java b/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java index 158b52a8f..3e7c87374 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java +++ b/org.argeo.jcr/src/org/argeo/jcr/JcrUtils.java @@ -86,8 +86,7 @@ public class JcrUtils { * Queries one single node. * * @return one single node or null if none was found - * @throws ArgeoJcrException - * if more than one node was found + * @throws ArgeoJcrException if more than one node was found */ public static Node querySingleNode(Query query) { NodeIterator nodeIterator; @@ -236,10 +235,8 @@ public class JcrUtils { /** * The provided data as a path ('/' at the end, not the beginning) * - * @param cal - * the date - * @param addHour - * whether to add hour as well + * @param cal the date + * @param addHour whether to add hour as well */ public static String dateAsPath(Calendar cal, Boolean addHour) { StringBuffer buf = new StringBuffer(14); @@ -363,6 +360,15 @@ public class JcrUtils { } } + /** Concisely get the path of the given node. */ + public static String getPath(Node node) { + try { + return node.getPath(); + } catch (RepositoryException e) { + throw new ArgeoJcrException("Cannot get path of " + node, e); + } + } + /** Concisely get the boolean value of a property */ public static Boolean check(Node node, String propertyName) { try { @@ -395,8 +401,7 @@ public class JcrUtils { /** * Create sub nodes relative to a parent node * - * @param nodeType - * the type of the leaf node + * @param nodeType the type of the leaf node */ public static Node mkdirs(Node parentNode, String relativePath, String nodeType) { return mkdirs(parentNode, relativePath, nodeType, null); @@ -405,8 +410,7 @@ public class JcrUtils { /** * Create sub nodes relative to a parent node * - * @param nodeType - * the type of the leaf node + * @param nodeType the type of the leaf node */ public static Node mkdirs(Node parentNode, String relativePath, String nodeType, String intermediaryNodeType) { List tokens = tokenize(relativePath); @@ -457,8 +461,7 @@ public class JcrUtils { } /** - * @param type - * the type of the leaf node + * @param type the type of the leaf node */ public static Node mkdirs(Session session, String path, String type) { return mkdirs(session, path, type, null, false); @@ -988,16 +991,26 @@ public class JcrUtils { /** Writes a {@link Binary} from a byte array */ public static void setBinaryAsBytes(Node node, String property, byte[] bytes) { - // InputStream in = null; Binary binary = null; try (InputStream in = new ByteArrayInputStream(bytes)) { - // in = new ByteArrayInputStream(bytes); binary = node.getSession().getValueFactory().createBinary(in); node.setProperty(property, binary); } catch (Exception e) { - throw new ArgeoJcrException("Cannot read binary " + property + " as bytes", e); + throw new ArgeoJcrException("Cannot set binary " + property + " as bytes", e); + } finally { + closeQuietly(binary); + } + } + + /** Writes a {@link Binary} from a byte array */ + public static void setBinaryAsBytes(Property prop, byte[] bytes) { + Binary binary = null; + try (InputStream in = new ByteArrayInputStream(bytes)) { + binary = prop.getSession().getValueFactory().createBinary(in); + prop.setValue(binary); + } catch (RepositoryException | IOException e) { + throw new ArgeoJcrException("Cannot set binary " + prop + " as bytes", e); } finally { - // IOUtils.closeQuietly(in); closeQuietly(binary); } } @@ -1071,15 +1084,19 @@ public class JcrUtils { } } - /** Logs out the session, not throwing any exception, even if it is null. */ + /** + * Logs out the session, not throwing any exception, even if it is null. + * {@link Jcr#logout(Session)} should rather be used. + */ public static void logoutQuietly(Session session) { - try { - if (session != null) - if (session.isLive()) - session.logout(); - } catch (Exception e) { - // silent - } + Jcr.logout(session); +// try { +// if (session != null) +// if (session.isLive()) +// session.logout(); +// } catch (Exception e) { +// // silent +// } } /** @@ -1157,10 +1174,8 @@ public class JcrUtils { /** * Update lastModified recursively until this parent. * - * @param node - * the node - * @param untilPath - * the base path, null is equivalent to "/" + * @param node the node + * @param untilPath the base path, null is equivalent to "/" */ public static void updateLastModifiedAndParents(Node node, String untilPath) { try { @@ -1347,8 +1362,8 @@ public class JcrUtils { * Copy only nt:folder and nt:file, without their additional types and * properties. * - * @param recursive - * if true copies folders as well, otherwise only first level files + * @param recursive if true copies folders as well, otherwise only first level + * files * @return how many files were copied */ public static Long copyFiles(Node fromNode, Node toNode, Boolean recursive, JcrMonitor monitor, boolean onlyAdd) {