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;
/** 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) {
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),
}
}
-
+
/* DEPENDENCY INJECTION */
public void setUserAdmin(UserAdmin userAdmin) {
this.userAdmin = userAdmin;
}
+
+ public void setUserTransaction(UserTransaction userTransaction) {
+ this.userTransaction = userTransaction;
+ }
}
\ No newline at end of file