X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FUserTransactionHandler.java;fp=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FUserTransactionHandler.java;h=aa07040f5ac49b8d0e9c0b82d5b5191ee193c7b8;hb=cd2948994931fcb43283ffb30c1058d5860dec68;hp=0a94d1a7d0d8351fb452b3e2874cede0a2e852ab;hpb=563ee18b53fa90f14dc3f443f29f6d020ffdee2b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/UserTransactionHandler.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/UserTransactionHandler.java index 0a94d1a7d..aa07040f5 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/UserTransactionHandler.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/UserTransactionHandler.java @@ -21,9 +21,11 @@ import javax.transaction.UserTransaction; import org.argeo.ArgeoException; import org.argeo.security.ui.admin.SecurityAdminPlugin; import org.argeo.security.ui.admin.internal.UiAdminUtils; +import org.argeo.security.ui.admin.internal.UserAdminWrapper; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.osgi.service.useradmin.UserAdminEvent; /** Manage the transaction that is bound to the current perspective */ public class UserTransactionHandler extends AbstractHandler { @@ -36,11 +38,12 @@ public class UserTransactionHandler extends AbstractHandler { public final static String TRANSACTION_COMMIT = "transaction.commit"; public final static String TRANSACTION_ROLLBACK = "transaction.rollback"; - private UserTransaction userTransaction; + /* DEPENDENCY INJECTION */ + private UserAdminWrapper userAdminWrapper; public Object execute(ExecutionEvent event) throws ExecutionException { - String commandId = event.getParameter(PARAM_COMMAND_ID); + UserTransaction userTransaction = userAdminWrapper.getUserTransaction(); try { if (TRANSACTION_BEGIN.equals(commandId)) { if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION) @@ -55,8 +58,11 @@ public class UserTransactionHandler extends AbstractHandler { } else if (TRANSACTION_ROLLBACK.equals(commandId)) { if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) throw new ArgeoException("No transaction to rollback."); - else + else { userTransaction.rollback(); + userAdminWrapper.notifyListeners(new UserAdminEvent(null, + UserAdminEvent.ROLE_CHANGED, null)); + } } UiAdminUtils.notifyTransactionStateChange(userTransaction); } catch (ArgeoException e) { @@ -65,20 +71,11 @@ public class UserTransactionHandler extends AbstractHandler { throw new ArgeoException("Unable to call " + commandId + " on " + userTransaction, e); } - // - // IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event); - // if (iww == null) - // return null; - // IWorkbenchPage activePage = iww.getActivePage(); - // IWorkbenchPart part = activePage.getActivePart(); - // if (part instanceof UsersView) - // ((UsersView) part).refresh(); - // else if (part instanceof GroupsView) - // ((GroupsView) part).refresh(); return null; } - public void setUserTransaction(UserTransaction userTransaction) { - this.userTransaction = userTransaction; + /* DEPENDENCY INJECTION */ + public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { + this.userAdminWrapper = userAdminWrapper; } } \ No newline at end of file