Code cleaning / documentation
[lgpl/argeo-commons.git] / server / plugins / org.argeo.jcr.ui.explorer / src / main / java / org / argeo / jcr / ui / explorer / browser / WorkspaceNode.java
index 6c8b7dbfefd0ffc3001739c90e7c5178d6faeef0..4bff1674f82e291ee94d924118c0d0865a93c9ad 100644 (file)
@@ -1,8 +1,10 @@
 package org.argeo.jcr.ui.explorer.browser;
 
+import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.Workspace;
 import javax.jcr.observation.EventIterator;
 import javax.jcr.observation.EventListener;
 
@@ -11,18 +13,22 @@ import org.argeo.eclipse.ui.TreeParent;
 import org.argeo.eclipse.ui.jcr.JcrUiPlugin;
 import org.eclipse.swt.graphics.Image;
 
+/**
+ * Wraps a JCR {@link Workspace}, or more precisely a {@link Session} to it.
+ * Implicitly also the root node of this session.
+ */
 public class WorkspaceNode extends TreeParent implements EventListener {
        private final String name;
        private final Repository repository;
        private Session session = null;
        public final static Image WORKSPACE_DISCONNECTED = JcrUiPlugin
-       .getImageDescriptor("icons/workspace_disconnected.png")
-       .createImage();
+                       .getImageDescriptor("icons/workspace_disconnected.png")
+                       .createImage();
        public final static Image WORKSPACE_CONNECTED = JcrUiPlugin
-       .getImageDescriptor("icons/workspace_connected.png").createImage();
+                       .getImageDescriptor("icons/workspace_connected.png").createImage();
 
        public WorkspaceNode(Repository repository, String name) {
-               this(repository, name, null); 
+               this(repository, name, null);
        }
 
        public WorkspaceNode(Repository repository, String name, Session session) {
@@ -38,6 +44,18 @@ public class WorkspaceNode extends TreeParent implements EventListener {
                return session;
        }
 
+       public Node getRootNode() {
+               try {
+                       if (session != null)
+                               return session.getRootNode();
+                       else
+                               return null;
+               } catch (RepositoryException e) {
+                       throw new ArgeoException("Cannot get root node of workspace "
+                                       + name, e);
+               }
+       }
+
        public void login() {
                try {
                        logout();