Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / commands / UserTransactionHandler.java
index 1e881694dc460efcdfbc5690f0425b0ebc83221f..236584ca3fcf16bb0a68403f8d65c764b01bdb64 100644 (file)
@@ -18,14 +18,13 @@ 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;
 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 */
@@ -49,17 +48,17 @@ public class UserTransactionHandler extends AbstractHandler {
                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,
@@ -67,20 +66,21 @@ public class UserTransactionHandler extends AbstractHandler {
                                }
                        }
 
+                       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);
-                                               }
-                                       });
+                       // HandlerUtil.getActivePart(event).getSite().getShell().getDisplay()
+                       // .asyncExec(new Runnable() {
+                       // @Override
+                       // public void run() {
+                       // UiAdminUtils
+                       // .notifyTransactionStateChange(userTransaction);
+                       // }
+                       // });
 
-               } catch (ArgeoException e) {
+               } 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;