X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fcommands%2FUserTransactionHandler.java;h=236584ca3fcf16bb0a68403f8d65c764b01bdb64;hb=c13da2a3a91edd21b54db7563727d009def37d3e;hp=6c9d1f995eb1898328cd69e781479f70d6f36dae;hpb=732542c8de267ed7d6cbb8c66b84cc90c8ad22d7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/UserTransactionHandler.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/UserTransactionHandler.java index 6c9d1f995..236584ca3 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/UserTransactionHandler.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/UserTransactionHandler.java @@ -18,7 +18,7 @@ package org.argeo.security.ui.admin.internal.commands; import javax.transaction.Status; import javax.transaction.UserTransaction; -import org.argeo.ArgeoException; +import org.argeo.cms.CmsException; import org.argeo.security.ui.admin.SecurityAdminPlugin; import org.argeo.security.ui.admin.internal.UiAdminUtils; import org.argeo.security.ui.admin.internal.UserAdminWrapper; @@ -43,32 +43,44 @@ public class UserTransactionHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { String commandId = event.getParameter(PARAM_COMMAND_ID); - UserTransaction userTransaction = userAdminWrapper.getUserTransaction(); + final UserTransaction userTransaction = userAdminWrapper + .getUserTransaction(); try { if (TRANSACTION_BEGIN.equals(commandId)) { if (userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION) - throw new ArgeoException("A transaction already exists"); + throw new CmsException("A transaction already exists"); else userTransaction.begin(); } else if (TRANSACTION_COMMIT.equals(commandId)) { if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) - throw new ArgeoException("No transaction."); + throw new CmsException("No transaction."); else userTransaction.commit(); } else if (TRANSACTION_ROLLBACK.equals(commandId)) { if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) - throw new ArgeoException("No transaction to rollback."); + throw new CmsException("No transaction to rollback."); else { userTransaction.rollback(); userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, null)); } } + UiAdminUtils.notifyTransactionStateChange(userTransaction); - } catch (ArgeoException e) { + // Try to remove invalid thread access errors when managing users. + // HandlerUtil.getActivePart(event).getSite().getShell().getDisplay() + // .asyncExec(new Runnable() { + // @Override + // public void run() { + // UiAdminUtils + // .notifyTransactionStateChange(userTransaction); + // } + // }); + + } catch (CmsException e) { throw e; } catch (Exception e) { - throw new ArgeoException("Unable to call " + commandId + " on " + throw new CmsException("Unable to call " + commandId + " on " + userTransaction, e); } return null;