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=1e881694dc460efcdfbc5690f0425b0ebc83221f;hb=d01cf8af884e44c3ddc6482a9dca4ac73bb8e93a;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..1e881694d 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 @@ -25,6 +25,7 @@ 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.eclipse.ui.handlers.HandlerUtil; import org.osgi.service.useradmin.UserAdminEvent; /** Manage the transaction that is bound to the current perspective */ @@ -43,7 +44,8 @@ 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) @@ -64,7 +66,17 @@ public class UserTransactionHandler extends AbstractHandler { UserAdminEvent.ROLE_CHANGED, null)); } } - UiAdminUtils.notifyTransactionStateChange(userTransaction); + + // 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 (ArgeoException e) { throw e; } catch (Exception e) {