Clean session management.
authorBruno Sinou <bsinou@argeo.org>
Wed, 19 Mar 2014 13:15:38 +0000 (13:15 +0000)
committerBruno Sinou <bsinou@argeo.org>
Wed, 19 Mar 2014 13:15:38 +0000 (13:15 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6896 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.ui/META-INF/spring/editors.xml
plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml [deleted file]
plugins/org.argeo.slc.client.ui/META-INF/spring/views.xml
plugins/org.argeo.slc.client.ui/plugin.xml
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/SlcExecutionPerspective.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/commands/RefreshJcrResultTreeView.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessEditor.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrProcessListView.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultListView.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java

index 31267a15abac370850b3e3db52e38a54e2749feb..fd98808b403e4c57b6c51bf22bf3628442e42353 100644 (file)
@@ -8,8 +8,6 @@
                scope="prototype">
                <property name="processController" ref="processController" />
                <property name="modulesManager" ref="modulesManager" />
-               <property name="session">
-                       <bean factory-bean="repository" factory-method="login" />
-               </property>
+               <property name="repository" ref="repository" />
        </bean>
 </beans>
diff --git a/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml b/plugins/org.argeo.slc.client.ui/META-INF/spring/jcr.xml
deleted file mode 100644 (file)
index b2043e2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-        http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-       <bean id="session" class="org.argeo.jcr.spring.ThreadBoundSession">
-               <property name="repository" ref="repository" />
-       </bean>
-</beans>
index 9c4b4a90851ec5916ff06102d2d2a39e42aef022..eca8f68a4443443b9177027dd9aa2271f4bf35c4 100644 (file)
@@ -6,18 +6,23 @@
 
        <bean id="jcrExecutionModulesView" class="org.argeo.slc.client.ui.views.JcrExecutionModulesView"
                scope="prototype">
-               <property name="session" ref="session" />
+               <property name="repository" ref="repository" />
                <property name="modulesManager" ref="modulesManager" />
        </bean>
 
        <bean id="jcrProcessListView" class="org.argeo.slc.client.ui.views.JcrProcessListView"
                scope="prototype">
-               <property name="session" ref="session" />
+               <property name="repository" ref="repository" />
        </bean>
 
        <bean id="jcrResultListView" class="org.argeo.slc.client.ui.views.JcrResultListView"
                scope="prototype">
-               <property name="session" ref="session" />
+               <property name="repository" ref="repository" />
        </bean>
 
-</beans>
+       <bean id="jcrResultTreeView" class="org.argeo.slc.client.ui.views.JcrResultTreeView"
+               scope="prototype">
+               <property name="repository" ref="repository" />
+       </bean>
+
+</beans>
\ No newline at end of file
index d1855da09b4e1a2ad6359a0fe855921cd780b103..6f802b40fa12300a529a104387f1a4bd2768a195 100644 (file)
                 name="Results"
                 restorable="true">
           </view>
+          <view
+                id="org.argeo.slc.client.ui.jcrResultTreeView"
+                class="org.argeo.eclipse.spring.SpringExtensionFactory"
+                icon="icons/results.gif"
+                name="Results"
+                restorable="true">
+          </view>
           <view
                 id="org.argeo.slc.client.ui.jcrProcessListView"
                 class="org.argeo.eclipse.spring.SpringExtensionFactory"
index 257029f3b29759c485c784b39ea4c3a1c6bf513e..743b5d8ed4b8b54445bea55b63cbbb6f578668aa 100644 (file)
@@ -31,7 +31,8 @@ public class SlcExecutionPerspective implements IPerspectiveFactory {
                IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
                                0.3f, editorArea);
                left.addView(ClientUiPlugin.ID + ".jcrExecutionModulesView");
-               left.addView(ClientUiPlugin.ID + ".jcrResultListView");
+               // left.addView(ClientUiPlugin.ID + ".jcrResultListView");
+               left.addView(ClientUiPlugin.ID + ".jcrResultTreeView");
                // Sleak view for SWT resource debugging
                // left.addView("org.eclipse.swt.tools.views.SleakView");
 
index ecc81242a8866370da1d2b999d7823f4fecdbb04..b7600b9e1770cab75f00c6a7803d6670b9b7aa86 100644 (file)
  */\r
 package org.argeo.slc.client.ui.commands;\r
 \r
-/*\r
- * Copyright (C) 2007-2012 Mathieu Baudier\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *         http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
 import java.util.Iterator;\r
 \r
 import org.argeo.slc.client.ui.ClientUiPlugin;\r
index 7e99f42549d9974458f1818ca4ee6c1d878ceec8..59473c667321e56f722d2a17a62d727d705279cf 100644 (file)
@@ -22,6 +22,7 @@ import java.util.UUID;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
@@ -109,6 +110,7 @@ public class ProcessEditor extends FormEditor implements SlcTypes, SlcNames {
        @Override
        public void dispose() {
                JcrUtils.logoutQuietly(session);
+               super.dispose();
        }
 
        /** Actually runs the process. */
@@ -230,8 +232,8 @@ public class ProcessEditor extends FormEditor implements SlcTypes, SlcNames {
                        editorDirtyStateChanged();
                } catch (RepositoryException e) {
                        throw new SlcException("Cannot save " + processNode, e);
-               } finally {
-                       JcrUtils.discardQuietly(session);
+                       // } finally {
+                       // JcrUtils.discardQuietly(session);
                }
        }
 
@@ -257,10 +259,20 @@ public class ProcessEditor extends FormEditor implements SlcTypes, SlcNames {
        // }
 
        /** Expects one session per editor. */
+       @Deprecated
        public void setSession(Session session) {
                this.session = session;
        }
 
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new SlcException("Unable to log in Repository " + repository,
+                                       re);
+               }
+       }
+
        public void setProcessController(ProcessController processController) {
                this.processController = processController;
        }
@@ -268,5 +280,4 @@ public class ProcessEditor extends FormEditor implements SlcTypes, SlcNames {
        public void setModulesManager(ExecutionModulesManager modulesManager) {
                this.modulesManager = modulesManager;
        }
-
 }
index 3d73adc27a8f0eee7815acf975ae219bbfd2b660..71f291e8ac56b48e2757b7529fbb175870a62f1f 100644 (file)
@@ -26,6 +26,7 @@ import java.util.TreeSet;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.nodetype.NodeType;
@@ -41,6 +42,7 @@ import org.argeo.eclipse.ui.jcr.DefaultNodeLabelProvider;
 import org.argeo.eclipse.ui.jcr.NodeElementComparer;
 import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider;
 import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils;
+import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.client.ui.ClientUiPlugin;
 import org.argeo.slc.client.ui.SlcImages;
@@ -427,12 +429,28 @@ public class JcrExecutionModulesView extends ViewPart implements SlcTypes,
                }
        }
 
+       public void dispose() {
+               JcrUtils.logoutQuietly(session);
+               super.dispose();
+       }
+
        // DEPENDENCY INJECTION
+
+       public void setModulesManager(ExecutionModulesManager modulesManager) {
+               this.modulesManager = modulesManager;
+       }
+
+       @Deprecated
        public void setSession(Session session) {
                this.session = session;
        }
 
-       public void setModulesManager(ExecutionModulesManager modulesManager) {
-               this.modulesManager = modulesManager;
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new SlcException("Unable to log in Repository " + repository,
+                                       re);
+               }
        }
 }
\ No newline at end of file
index 27a39cf7b278ca3d23d662130d290ecbe6e8b1b7..f6a20dc10194e23fc3b963b0609f2d6044083d66 100644 (file)
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.observation.Event;
@@ -135,12 +136,6 @@ public class JcrProcessListView extends ViewPart {
                viewer.getControl().setFocus();
        }
 
-       @Override
-       public void dispose() {
-               JcrUtils.unregisterQuietly(session.getWorkspace(), processesObserver);
-               super.dispose();
-       }
-
        class ContentProvider implements IStructuredContentProvider {
 
                public Object[] getElements(Object inputElement) {
@@ -246,8 +241,24 @@ public class JcrProcessListView extends ViewPart {
 
        }
 
+       @Deprecated
        public void setSession(Session session) {
                this.session = session;
        }
 
+       public void dispose() {
+               JcrUtils.unregisterQuietly(session.getWorkspace(), processesObserver);
+               JcrUtils.logoutQuietly(session);
+               super.dispose();
+       }
+
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new SlcException("Unable to log in Repository " + repository,
+                                       re);
+               }
+       }
+
 }
\ No newline at end of file
index 0f25c7ce7867d8459a4459b275c438025ce902a0..4bfb57c194a00f4a8d3fdc07a7d4fbcd8813fe2d 100644 (file)
@@ -22,6 +22,7 @@ import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.observation.Event;
@@ -157,12 +158,6 @@ public class JcrResultListView extends ViewPart implements SlcNames {
                viewer.getControl().setFocus();
        }
 
-       @Override
-       public void dispose() {
-               JcrUtils.unregisterQuietly(session.getWorkspace(), resultsObserver);
-               super.dispose();
-       }
-
        class ViewContentProvider implements IStructuredContentProvider {
 
                public Object[] getElements(Object inputElement) {
@@ -274,7 +269,23 @@ public class JcrResultListView extends ViewPart implements SlcNames {
                }
        }
 
+       @Deprecated
        public void setSession(Session session) {
                this.session = session;
        }
+
+       public void dispose() {
+               JcrUtils.unregisterQuietly(session.getWorkspace(), resultsObserver);
+               JcrUtils.logoutQuietly(session);
+               super.dispose();
+       }
+
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new SlcException("Unable to log in Repository " + repository,
+                                       re);
+               }
+       }
 }
\ No newline at end of file
index 5ace2381a44d8ddb8582943bf2fde4397c65c465..f0ec30ed91406448220fd1386ab87222aa3ee18d 100644 (file)
@@ -25,6 +25,7 @@ import java.util.List;
 import javax.jcr.Node;\r
 import javax.jcr.NodeIterator;\r
 import javax.jcr.Property;\r
+import javax.jcr.Repository;\r
 import javax.jcr.RepositoryException;\r
 import javax.jcr.Session;\r
 import javax.jcr.nodetype.NodeType;\r
@@ -948,7 +949,23 @@ public class JcrResultTreeView extends ViewPart {
        }\r
 \r
        /* DEPENDENCY INJECTION */\r
+       @Deprecated\r
        public void setSession(Session session) {\r
                this.session = session;\r
        }\r
+\r
+       public void dispose() {\r
+               // JcrUtils.unregisterQuietly(session.getWorkspace(), resultsObserver);\r
+               JcrUtils.logoutQuietly(session);\r
+               super.dispose();\r
+       }\r
+\r
+       public void setRepository(Repository repository) {\r
+               try {\r
+                       session = repository.login();\r
+               } catch (RepositoryException re) {\r
+                       throw new SlcException("Unable to log in Repository " + repository,\r
+                                       re);\r
+               }\r
+       }\r
 }
\ No newline at end of file