Refactor JCR exceptions.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / Jcr.java
index c3db4b604c71b1e8a955b45b2b5019de7a13dd14..fb6f610131842bf546196eeaa7eb3302f029586a 100644 (file)
@@ -36,7 +36,6 @@ import javax.jcr.version.VersionManager;
  * exceptions. Loosely inspired by Java's <code>Files</code> singleton.
  */
 public class Jcr {
-
        /**
         * @see Node#isNodeType(String)
         * @throws IllegalStateException caused by {@link RepositoryException}
@@ -366,8 +365,18 @@ public class Jcr {
                }
        }
 
-       /** Retrieves the {@link Session} related to this node. */
+       /**
+        * Retrieves the {@link Session} related to this node.
+        * 
+        * @deprecated Use {@link #getSession(Node)} instead.
+        */
+       @Deprecated
        public static Session session(Node node) {
+               return getSession(node);
+       }
+
+       /** Retrieves the {@link Session} related to this node. */
+       public static Session getSession(Node node) {
                try {
                        return node.getSession();
                } catch (RepositoryException e) {
@@ -375,6 +384,15 @@ public class Jcr {
                }
        }
 
+       /** Retrieves the root node related to this session. */
+       public static Node getRootNode(Session session) {
+               try {
+                       return session.getRootNode();
+               } catch (RepositoryException e) {
+                       throw new IllegalStateException("Cannot get root node for " + session, e);
+               }
+       }
+
        /**
         * Saves the {@link Session} related to this node. Note that all other unrelated
         * modifications in this session will also be saved.
@@ -414,6 +432,11 @@ public class Jcr {
                }
        }
 
+       /** Safely and silently logs out the underlying session. */
+       public static void logout(Node node) {
+               Jcr.logout(session(node));
+       }
+
        /*
         * SECURITY
         */