From: Mathieu Baudier Date: Fri, 13 Feb 2015 23:52:39 +0000 (+0000) Subject: Fix close of workspace node in JCR browser X-Git-Tag: argeo-commons-2.1.30~364 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=f27875a152e372e33954fd13e1de6b3e3de8cd09;p=lgpl%2Fargeo-commons.git Fix close of workspace node in JCR browser git-svn-id: https://svn.argeo.org/commons/trunk@7861 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/NodeContentProvider.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/NodeContentProvider.java index c8b4be9d2..943841514 100644 --- a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/NodeContentProvider.java +++ b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/NodeContentProvider.java @@ -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]; } diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/model/WorkspaceElem.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/model/WorkspaceElem.java index 710df928f..54351ffd4 100644 --- a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/model/WorkspaceElem.java +++ b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/jcr/internal/model/WorkspaceElem.java @@ -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();