X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FNewUser.java;h=9f1ae8d0d0d37363b670c0ba250ad8c8028fb3d6;hb=28f2a8c1668ce2e9d2bb2a6601a659c2bcc2676b;hp=fce684a67c965cb1430c987c65594391d08fd961;hpb=1b8ad59bf691c15ed1317378a83c71c56c81cad2;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java index fce684a67..9f1ae8d0d 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java @@ -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