You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/12/15 16:13:36 UTC

svn commit: r890818 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java

Author: jukka
Date: Tue Dec 15 15:13:36 2009
New Revision: 890818

URL: http://svn.apache.org/viewvc?rev=890818&view=rev
Log:
JCR-2439: More utility methods in JcrUtils

Add simple getOrAddNode() methods

Modified:
    jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java

Modified: jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java?rev=890818&r1=890817&r2=890818&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java Tue Dec 15 15:13:36 2009
@@ -346,6 +346,55 @@
     }
 
     /**
+     * Returns the named child of the given node, creating the child if
+     * it does not already exist. If the child node gets added, then its
+     * type will be determined by the child node definitions associated
+     * with the parent node. The caller is expected to take care of saving
+     * or discarding any transient changes.
+     *
+     * @see Node#getNode(String)
+     * @see Node#addNode(String)
+     * @param parent parent node
+     * @param name name of the child node
+     * @return child node
+     * @throws RepositoryException if the child node can not be
+     *                             accessed or created
+     */
+    public static Node getOrAddNode(Node parent, String name)
+            throws RepositoryException {
+        if (parent.hasNode(name)) {
+            return parent.getNode(name);
+        } else {
+            return parent.addNode(name);
+        }
+    }
+
+    /**
+     * Returns the named child of the given node, creating the child if
+     * it does not already exist. If the child node gets added, then it
+     * is created with the given node type. The caller is expected to take
+     * care of saving or discarding any transient changes.
+     *
+     * @see Node#getNode(String)
+     * @see Node#addNode(String)
+     * @param parent parent node
+     * @param name name of the child node
+     * @param type the node type to use for the child node in case
+     *             it needs to be created, ignored otherwise
+     * @return child node
+     * @throws RepositoryException if the child node can not be
+     *                             accessed or created
+     */
+    public static Node getOrAddNode(Node parent, String name, String type)
+            throws RepositoryException {
+        if (parent.hasNode(name)) {
+            return parent.getNode(name);
+        } else {
+            return parent.addNode(name, type);
+        }
+    }
+
+    /**
      * Returns a string representation of the given item. The returned string
      * is designed to be easily readable while providing maximum amount of
      * information for logging and debugging purposes.