From: Mathieu Baudier Date: Thu, 8 Mar 2012 14:31:00 +0000 (+0000) Subject: Improve cleaning of the model (bug 23) X-Git-Tag: argeo-commons-2.1.30~988 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=d24fe8d5ee68544ce3d6300ac31a0c3cb8193aba;p=lgpl%2Fargeo-commons.git Improve cleaning of the model (bug 23) git-svn-id: https://svn.argeo.org/commons/trunk@5162 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/plugins/org.argeo.jcr.ui.explorer/build.properties b/server/plugins/org.argeo.jcr.ui.explorer/build.properties index 1f316c6fa..9b0c715ca 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/build.properties +++ b/server/plugins/org.argeo.jcr.ui.explorer/build.properties @@ -3,4 +3,5 @@ source.. = src/main/java/,\ output.. = target/classes/ bin.includes = META-INF/,\ .,\ - plugin.xml + plugin.xml,\ + plugin.properties diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/HomeContentProvider.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/HomeContentProvider.java deleted file mode 100644 index 123fdaa49..000000000 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/HomeContentProvider.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.argeo.jcr.ui.explorer.browser; - -import javax.jcr.Session; - -import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider; -import org.argeo.jcr.JcrUtils; - -public class HomeContentProvider extends SimpleNodeContentProvider { - - public HomeContentProvider(Session session) { - super(session, new String[] { JcrUtils.getUserHomePath(session) }); - } - -} diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/NodeContentProvider.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/NodeContentProvider.java index 205874285..085087201 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/NodeContentProvider.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/browser/NodeContentProvider.java @@ -7,8 +7,6 @@ import java.util.List; import javax.jcr.Node; import javax.jcr.Session; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.argeo.eclipse.ui.TreeParent; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.JcrUtils; @@ -26,7 +24,8 @@ import org.eclipse.jface.viewers.Viewer; * */ public class NodeContentProvider implements ITreeContentProvider { - private final static Log log = LogFactory.getLog(NodeContentProvider.class); + // private final static Log log = + // LogFactory.getLog(NodeContentProvider.class); // Business Objects final private RepositoryRegister repositoryRegister; @@ -34,6 +33,10 @@ public class NodeContentProvider implements ITreeContentProvider { final private JcrKeyring jcrKeyring; final private boolean sortChildren; + // reference for cleaning + private SingleJcrNode homeNode = null; + private RepositoriesNode repositoriesNode = null; + // Utils private TreeObjectsComparator itemComparator = new TreeObjectsComparator(); @@ -45,22 +48,35 @@ public class NodeContentProvider implements ITreeContentProvider { this.sortChildren = sortChildren; } + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + if (userSession != null) { + Node userHome = JcrUtils.getUserHome(userSession); + if (userHome != null) { + // TODO : find a way to dynamically get alias for the node + if (homeNode != null) + homeNode.dispose(); + homeNode = new SingleJcrNode(null, userHome, + userSession.getUserID(), ArgeoJcrConstants.ALIAS_NODE); + } + } + if (repositoryRegister != null) { + if (repositoriesNode != null) + repositoriesNode.dispose(); + repositoriesNode = new RepositoriesNode("Repositories", + repositoryRegister, null, jcrKeyring); + } + } + /** * Sends back the first level of the Tree. Independent from inputElement * that can be null */ public Object[] getElements(Object inputElement) { List objs = new ArrayList(); - if (userSession != null) { - Node userHome = JcrUtils.getUserHome(userSession); - if (userHome != null) - // TODO : find a way to dynamically get alias for the node - objs.add(new SingleJcrNode(null, userHome, userSession - .getUserID(), ArgeoJcrConstants.ALIAS_NODE)); - } - if (repositoryRegister != null) - objs.add(new RepositoriesNode("Repositories", repositoryRegister, - null, jcrKeyring)); + if (homeNode != null) + objs.add(homeNode); + if (repositoriesNode != null) + objs.add(repositoriesNode); return objs.toArray(); } @@ -105,8 +121,13 @@ public class NodeContentProvider implements ITreeContentProvider { } public void dispose() { + if (homeNode != null) + homeNode.dispose(); + if (repositoriesNode != null) { + // logs out open sessions + // see https://bugzilla.argeo.org/show_bug.cgi?id=23 + repositoriesNode.dispose(); + } } - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } } diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java index fe13a8091..812dfef49 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericNodeEditor.java @@ -12,10 +12,8 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.forms.editor.FormEditor; /** - * * Container for the node editor page. At creation time, it takes a JCR Node * that cannot be changed afterwards. - * */ public class GenericNodeEditor extends FormEditor { @@ -25,7 +23,6 @@ public class GenericNodeEditor extends FormEditor { private Node currentNode; - private GenericNodePage genericNodePage; private GenericPropertyPage genericPropertyPage; private ChildNodesPage childNodesPage; private NodeRightsManagementPage nodeRightsManagementPage; diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java index 176d7f659..2adcb92e3 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/editors/GenericPropertyPage.java @@ -9,8 +9,6 @@ import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Value; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.jcr.ui.explorer.JcrExplorerConstants; import org.argeo.jcr.ui.explorer.JcrExplorerPlugin; @@ -26,7 +24,6 @@ import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; -import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; /** @@ -36,34 +33,26 @@ import org.eclipse.ui.forms.widgets.ScrolledForm; public class GenericPropertyPage extends FormPage implements JcrExplorerConstants { - private final static Log log = LogFactory.getLog(GenericPropertyPage.class); - - // local constants - private final static String JCR_PROPERTY_NAME = "jcr:name"; + // private final static Log log = + // LogFactory.getLog(GenericPropertyPage.class); // Main business Objects private Node currentNode; - // This page widgets - private FormToolkit tk; - private TreeViewer complexTree; - public GenericPropertyPage(FormEditor editor, String title, Node currentNode) { super(editor, "id", title); this.currentNode = currentNode; } protected void createFormContent(IManagedForm managedForm) { - tk = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); - form.setText(JcrExplorerPlugin - .getMessage("genericNodePageTitle")); + form.setText(JcrExplorerPlugin.getMessage("genericNodePageTitle")); FillLayout layout = new FillLayout(); layout.marginHeight = 5; layout.marginWidth = 5; form.getBody().setLayout(layout); - complexTree = createComplexTree(form.getBody()); + createComplexTree(form.getBody()); // TODO remove following // createPropertiesPart(form.getBody()); diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/WorkspaceNode.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/WorkspaceNode.java index 63c56349a..ba118e14e 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/WorkspaceNode.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/WorkspaceNode.java @@ -16,7 +16,6 @@ import org.argeo.eclipse.ui.TreeParent; * keeps a reference to its parent {@link RepositoryNode}, to be able to * retrieve alias of the current used repository */ - public class WorkspaceNode extends TreeParent implements EventListener, UiNode { private Session session = null; @@ -60,6 +59,13 @@ public class WorkspaceNode extends TreeParent implements EventListener, UiNode { } } + @Override + public synchronized void dispose() { + logout(); + super.dispose(); + } + + /** Logouts the session, does not nothing if there is no live session. */ public void logout() { try { if (session != null && session.isLive()) { diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java index b84214c74..ae07a5b5e 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java @@ -5,7 +5,6 @@ import java.util.List; import javax.jcr.Property; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; -import javax.jcr.Session; import javax.jcr.Value; import javax.jcr.observation.Event; import javax.jcr.observation.EventListener; @@ -73,8 +72,8 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { public void createPartControl(Composite parent) { // look for session - Session nodeSession = jcrKeyring != null ? jcrKeyring.getSession() - : null; + // Session nodeSession = jcrKeyring != null ? jcrKeyring.getSession() + // : null; // if (nodeSession == null) { // Repository nodeRepository = JcrUtils.getRepositoryByAlias( // repositoryRegister, ArgeoJcrConstants.ALIAS_NODE); @@ -82,7 +81,6 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // try { // nodeSession = nodeRepository.login(); // // TODO : enhance that to enable multirepository listener. - // session = nodeSession; // } catch (RepositoryException e1) { // throw new ArgeoException("Cannot login to node repository"); // } @@ -247,6 +245,11 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { return propertiesViewer; } + @Override + public void dispose() { + super.dispose(); + } + @Override protected TreeViewer getNodeViewer() { return nodesViewer; diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java index 9e9168e4f..34ce3325a 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java @@ -13,7 +13,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; -import org.argeo.eclipse.ui.dialogs.Error; +import org.argeo.eclipse.ui.ErrorFeedback; import org.argeo.eclipse.ui.specific.ImportToServerWizardPage; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.MessageDialog; @@ -51,7 +51,7 @@ public class ImportFileSystemWizard extends Wizard { final String objectPath = importPage.getObjectPath(); // We do not display a progress bar for one file only - if (importPage.FILE_ITEM_TYPE.equals(objectType)) { + if (ImportToServerWizardPage.FILE_ITEM_TYPE.equals(objectType)) { // In Rap we must force the "real" upload of the file importPage.performFinish(); try { @@ -75,9 +75,9 @@ public class ImportFileSystemWizard extends Wizard { return false; } return true; - } else if (importPage.FOLDER_ITEM_TYPE.equals(objectType)) { + } else if (ImportToServerWizardPage.FOLDER_ITEM_TYPE.equals(objectType)) { if (objectPath == null || !new File(objectPath).exists()) { - Error.show("Directory " + objectPath + " does not exist"); + ErrorFeedback.show("Directory " + objectPath + " does not exist"); return false; } @@ -104,7 +104,7 @@ public class ImportFileSystemWizard extends Wizard { } }); } catch (Exception e) { - Error.show("Cannot import " + objectPath, e); + ErrorFeedback.show("Cannot import " + objectPath, e); failed = true; }