Introduce transaction in user admin UI.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Sep 2015 11:27:05 +0000 (11:27 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Sep 2015 11:27:05 +0000 (11:27 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8389 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.security.ui.admin/META-INF/spring/editors.xml
org.argeo.security.ui.admin/META-INF/spring/osgi.xml
org.argeo.security.ui.admin/META-INF/spring/views.xml
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/UserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/views/UsersView.java

index 5de9ede203c0c767dc5bd9c04cf127d41750397c..263cfccb4cae787b57fe905588d48adaefffaea9 100644 (file)
@@ -9,6 +9,7 @@
        <bean id="userEditor" class="org.argeo.security.ui.admin.editors.UserEditor"
                scope="prototype">
                <property name="userAdmin" ref="userAdmin" />
+               <property name="userTransaction" ref="userTransaction" />
        </bean>
 
        <!-- <bean id="groupEditor" class="org.argeo.security.ui.admin.editors.GroupEditor" 
index b2154564aad3ff95d863017832f23e7d826a3271..9d1d4645c66f20cef8f413e0b05a61c6e5c3e9e1 100644 (file)
@@ -14,5 +14,5 @@
                /> -->\r
        <!-- new useradmin -->\r
        <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
-\r
+       <reference id="userTransaction" interface="javax.transaction.UserTransaction" />\r
 </beans:beans>
\ No newline at end of file
index 23d29d28bbbc8cf6346c9050f2ce658a6d92b482..6b0970e414323d1c4f6de3fd1152e0b00aa627a6 100644 (file)
@@ -7,6 +7,7 @@
        <bean id="usersView" class="org.argeo.security.ui.admin.views.UsersView"
                scope="prototype">
                <property name="userAdmin" ref="userAdmin" />
+               <property name="userTransaction" ref="userTransaction" />
        </bean>
 
        <bean id="groupsView" class="org.argeo.security.ui.admin.views.GroupsView"
index 761f48b80f0d4292f3858f85fe1cffaad6245090..af6f5748e84a6c59c9d779bde6a23f852e28decd 100644 (file)
@@ -18,6 +18,8 @@ package org.argeo.security.ui.admin.editors;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.transaction.UserTransaction;
+
 import org.argeo.ArgeoException;
 import org.argeo.security.ui.admin.SecurityAdminImages;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
@@ -41,6 +43,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
        /* DEPENDENCY INJECTION */
        private UserAdmin userAdmin;
+       private UserTransaction userTransaction;
 
        // Context
        private User user;
@@ -116,6 +119,12 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        public void doSave(IProgressMonitor monitor) {
                commitPages(true);
                firePropertyChange(PROP_DIRTY);
+               // FIXME transaction should be managed at a higher level
+               try {
+                       userTransaction.commit();
+               } catch (Exception e) {
+                       throw new ArgeoException("Could not save user editor", e);
+               }
        }
 
        @Override
@@ -140,4 +149,9 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        public void setUserAdmin(UserAdmin userAdmin) {
                this.userAdmin = userAdmin;
        }
+
+       public void setUserTransaction(UserTransaction userTransaction) {
+               this.userTransaction = userTransaction;
+       }
+
 }
\ No newline at end of file
index d380f0cc1ed8b4204d68f25989edd7a4cd64384c..989b1975e84278b8cb8bab0aac3dd8225fda0063 100644 (file)
@@ -18,6 +18,10 @@ package org.argeo.security.ui.admin.views;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.transaction.UserTransaction;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.ArgeoNames;
@@ -39,11 +43,13 @@ import org.osgi.service.useradmin.UserAdmin;
 
 /** List all users with filter - based on Ldif userAdmin */
 public class UsersView extends ViewPart implements ArgeoNames {
+       private final static Log log = LogFactory.getLog(UsersView.class);
        public final static String ID = SecurityAdminPlugin.PLUGIN_ID
                        + ".usersView";
 
        /* DEPENDENCY INJECTION */
        private UserAdmin userAdmin;
+       private UserTransaction userTransaction;
 
        // UI Objects
        private UserTableViewer userTableViewerCmp;
@@ -75,6 +81,13 @@ public class UsersView extends ViewPart implements ArgeoNames {
 
                // Really?
                userTableViewerCmp.refresh();
+
+               try {
+                       if (userTransaction != null)
+                               userTransaction.begin();
+               } catch (Exception e) {
+                       throw new ArgeoException("Cannot begin transaction", e);
+               }
        }
 
        private class MyUserTableViewer extends UserTableViewer {
@@ -110,6 +123,13 @@ public class UsersView extends ViewPart implements ArgeoNames {
        @Override
        public void dispose() {
                super.dispose();
+               // try {
+               // if (userTransaction != null
+               // && userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION)
+               // userTransaction.rollback();
+               // } catch (Exception e) {
+               // log.error("Cannot clean transaction", e);
+               // }
        }
 
        @Override
@@ -121,4 +141,9 @@ public class UsersView extends ViewPart implements ArgeoNames {
        public void setUserAdmin(UserAdmin userAdmin) {
                this.userAdmin = userAdmin;
        }
+
+       public void setUserTransaction(UserTransaction userTransaction) {
+               this.userTransaction = userTransaction;
+       }
+
 }
\ No newline at end of file