Fix close of workspace node in JCR browser
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 13 Feb 2015 23:52:39 +0000 (23:52 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 13 Feb 2015 23:52:39 +0000 (23:52 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@7861 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/NodeContentProvider.java
org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/model/WorkspaceElem.java

index c8b4be9d2d7fa65ad2e6d0274b1b0b1387c7db0e..943841514f967467b09b4fe5705e21146c90a9da 100644 (file)
@@ -107,6 +107,8 @@ public class NodeContentProvider implements ITreeContentProvider {
                if (parentElement instanceof TreeParent) {
                        if (sortChildren) {
                                Object[] tmpArr = ((TreeParent) parentElement).getChildren();
+                               if (tmpArr == null)
+                                       return new Object[0];
                                TreeParent[] arr = new TreeParent[tmpArr.length];
                                for (int i = 0; i < tmpArr.length; i++)
                                        arr[i] = (TreeParent) tmpArr[i];
@@ -114,7 +116,7 @@ public class NodeContentProvider implements ITreeContentProvider {
                                return arr;
                        } else
                                return ((TreeParent) parentElement).getChildren();
-               } else 
+               } else
                        return new Object[0];
        }
 
index 710df928ffd271e6bc1f2df51b38a497d264e70f..54351ffd41df60d21dee31122671ccf29485ab2c 100644 (file)
@@ -43,11 +43,11 @@ public class WorkspaceElem extends TreeParent {
                setParent(parent);
        }
 
-       public Session getSession() {
+       public synchronized Session getSession() {
                return session;
        }
 
-       public Node getRootNode() {
+       public synchronized Node getRootNode() {
                try {
                        if (session != null)
                                return session.getRootNode();
@@ -59,7 +59,7 @@ public class WorkspaceElem extends TreeParent {
                }
        }
 
-       public void login() {
+       public synchronized void login() {
                try {
                        session = ((RepositoryElem) getParent()).repositoryLogin(getName());
                } catch (RepositoryException e) {
@@ -82,13 +82,14 @@ public class WorkspaceElem extends TreeParent {
        }
 
        /** Logouts the session, does not nothing if there is no live session. */
-       public void logout() {
+       public synchronized void logout() {
                clearChildren();
                JcrUtils.logoutQuietly(session);
+               session = null;
        }
 
        @Override
-       public boolean hasChildren() {
+       public synchronized boolean hasChildren() {
                try {
                        if (isConnected())
                                return session.getRootNode().hasNodes();