From f27875a152e372e33954fd13e1de6b3e3de8cd09 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 13 Feb 2015 23:52:39 +0000 Subject: [PATCH] Fix close of workspace node in JCR browser git-svn-id: https://svn.argeo.org/commons/trunk@7861 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../workbench/jcr/internal/NodeContentProvider.java | 4 +++- .../workbench/jcr/internal/model/WorkspaceElem.java | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) 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(); -- 2.30.2