Update and session management pattern for view and editor to remove old deprecated...
authorBruno Sinou <bsinou@argeo.org>
Thu, 20 Mar 2014 20:53:35 +0000 (20:53 +0000)
committerBruno Sinou <bsinou@argeo.org>
Thu, 20 Mar 2014 20:53:35 +0000 (20:53 +0000)
See https://www.argeo.org/bugzilla/show_bug.cgi?id=211

git-svn-id: https://svn.argeo.org/commons/trunk@6902 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

security/plugins/org.argeo.security.ui.admin/META-INF/spring/common.xml
security/plugins/org.argeo.security.ui.admin/META-INF/spring/editors.xml
security/plugins/org.argeo.security.ui.admin/META-INF/spring/views.xml
security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java
security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/RolesView.java
security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/UsersView.java

index bb669427a977b0cd5a2cc77ead3c9603abbb246f..737f30430f1de0eb82592c291808f9d754fd163f 100644 (file)
                </property>\r
        </bean>\r
 \r
-       <bean id="session" class="org.argeo.security.jcr.SecureThreadBoundSession">\r
-               <property name="repository" ref="nodeRepository" />\r
-       </bean>\r
-\r
+       <!-- FIXME Hard-coded dependency to Jackrabbit for user management -->\r
        <bean name="jcrSecurityModel" class="org.argeo.security.jackrabbit.JackrabbitSecurityModel" />\r
 \r
+       <!-- Old deprecated way. -->\r
+       <!-- <bean id="session" class="org.argeo.security.jcr.SecureThreadBoundSession"> \r
+               <property name="repository" ref="nodeRepository" /> </bean> -->\r
 </beans>
\ No newline at end of file
index 8510866f94caece51080778a8fce20c9e5b76335..740792a61b3c16a0b0860c89504a25e8b47c8f00 100644 (file)
@@ -8,6 +8,6 @@
        <bean id="adminArgeoUserEditor" class="org.argeo.security.ui.admin.editors.ArgeoUserEditor"
                scope="prototype">
                <property name="userAdminService" ref="userAdminService" />
-               <property name="session" ref="session" />
+               <property name="repository" ref="nodeRepository" />
        </bean>
 </beans>
index d399c895b063489269dc8d150791a36dd2a0d265..2ddb05f60131011892f04cc286fddf5381ebb673 100644 (file)
@@ -6,7 +6,8 @@
 
        <bean id="adminUsersView" class="org.argeo.security.ui.admin.views.UsersView"
                scope="prototype">
-               <property name="session" ref="session" />
+               <property name="repository" ref="nodeRepository" />
+               <!-- <property name="session" ref="session" />  -->
        </bean>
        
        <bean id="adminRolesView" class="org.argeo.security.ui.admin.views.RolesView"
index c32553050b7a35f79b6f6aa3f13820a7e484ae51..9e564a4af515d2c7c7df4be7eab804fe3557985c 100644 (file)
@@ -16,6 +16,7 @@
 package org.argeo.security.ui.admin.editors;
 
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
@@ -35,13 +36,16 @@ import org.springframework.security.GrantedAuthority;
 
 /** Editor for an Argeo user. */
 public class ArgeoUserEditor extends FormEditor {
-       public final static String ID = "org.argeo.security.ui.admin.adminArgeoUserEditor";
+       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+                       + ".adminArgeoUserEditor";
+
+       /* DEPENDENCY INJECTION */
+       private Session session;
+       private UserAdminService userAdminService;
 
-       private JcrUserDetails userDetails;
        // private Node userHome;
        private Node userProfile;
-       private UserAdminService userAdminService;
-       private Session session;
+       private JcrUserDetails userDetails;
 
        public void init(IEditorSite site, IEditorInput input)
                        throws PartInitException {
@@ -132,11 +136,16 @@ public class ArgeoUserEditor extends FormEditor {
                userRolesPage.refresh();
        }
 
+       /* DEPENDENCY INJECTION */
        public void setUserAdminService(UserAdminService userAdminService) {
                this.userAdminService = userAdminService;
        }
 
-       public void setSession(Session session) {
-               this.session = session;
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new ArgeoException("Unable to initialise local session", re);
+               }
        }
 }
index 91f8622f096be35b31279ea7b12c3f01e0ffa334..fbe7dd5704b2e02d8f3fa552fddb86ec6a333c0e 100644 (file)
@@ -39,7 +39,8 @@ import org.eclipse.ui.part.ViewPart;
 
 /** List all roles. */
 public class RolesView extends ViewPart {
-       public final static String ID = "org.argeo.security.ui.admin.adminRolesView";
+       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+                       + ".adminRolesView";
 
        private Text newRole;
 
index 5f47741f5edb951cff6fd40797d48c1e6cbfcbf3..a7437156d96e55ea24755b0bdf2596a9f44255a9 100644 (file)
@@ -16,6 +16,7 @@
 package org.argeo.security.ui.admin.views;
 
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.observation.Event;
@@ -45,8 +46,10 @@ public class UsersView extends ViewPart implements ArgeoNames {
        public final static String ID = SecurityAdminPlugin.PLUGIN_ID
                        + ".adminUsersView";
 
-       private UserTableComposite userTableCmp;
+       /* DEPENDENCY INJECTION */
        private Session session;
+
+       private UserTableComposite userTableCmp;
        private JcrUserListener userStructureListener;
        private JcrUserListener userPropertiesListener;
 
@@ -86,12 +89,13 @@ public class UsersView extends ViewPart implements ArgeoNames {
        public void dispose() {
                JcrUtils.removeListenerQuietly(session, userStructureListener);
                JcrUtils.removeListenerQuietly(session, userPropertiesListener);
+               JcrUtils.logoutQuietly(session);
                super.dispose();
        }
 
-       public void setSession(Session session) {
-               this.session = session;
-       }
+       // public void setSession(Session session) {
+       // this.session = session;
+       // }
 
        public void refresh() {
                this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
@@ -141,4 +145,14 @@ public class UsersView extends ViewPart implements ArgeoNames {
                        }
                }
        }
+
+       /* DEPENDENCY INJECTION */
+       public void setRepository(Repository repository) {
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new ArgeoException("Unable to initialise local session", re);
+               }
+       }
+
 }
\ No newline at end of file