Fix filtering on group and user views, remove legacy classes.
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / commands / NewUser.java
index fce684a67c965cb1430c987c65594391d08fd961..9f1ae8d0d0d37363b670c0ba250ad8c8028fb3d6 100644 (file)
@@ -17,6 +17,10 @@ package org.argeo.security.ui.admin.commands;
 
 import java.util.Dictionary;
 
+import javax.transaction.Status;
+import javax.transaction.UserTransaction;
+
+import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.jcr.ArgeoNames;
@@ -49,10 +53,11 @@ import org.osgi.service.useradmin.UserAdmin;
 /** Open a wizard that enables creation of a new user. */
 public class NewUser extends AbstractHandler {
        // private final static Log log = LogFactory.getLog(NewUser.class);
-
        public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".newUser";
 
+       /* DEPENDENCY INJECTION */
        private UserAdmin userAdmin;
+       private UserTransaction userTransaction;
 
        // TODO implement a dynamic choice of the base dn
        private String getDn(String uid) {
@@ -107,6 +112,16 @@ public class NewUser extends AbstractHandler {
                        if (!canFinish())
                                return false;
                        String username = mainUserInfo.getUsername();
+
+                       // Begin transaction if needed
+                       try {
+                               if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION)
+                                       userTransaction.begin();
+                       } catch (Exception e) {
+                               throw new ArgeoException("Unable to start "
+                                               + "transaction to create user " + username, e);
+                       }
+
                        try {
                                char[] password = mainUserInfo.getPassword();
                                User user = (User) userAdmin.createRole(getDn(username),
@@ -250,9 +265,13 @@ public class NewUser extends AbstractHandler {
 
                }
        }
-       
+
        /* DEPENDENCY INJECTION */
        public void setUserAdmin(UserAdmin userAdmin) {
                this.userAdmin = userAdmin;
        }
+
+       public void setUserTransaction(UserTransaction userTransaction) {
+               this.userTransaction = userTransaction;
+       }
 }
\ No newline at end of file