Work on invalid thread access error while modifying the user referential
authorBruno Sinou <bsinou@argeo.org>
Fri, 9 Sep 2016 16:34:21 +0000 (16:34 +0000)
committerBruno Sinou <bsinou@argeo.org>
Fri, 9 Sep 2016 16:34:21 +0000 (16:34 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9109 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/UserTransactionHandler.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserTransactionProvider.java

index c2925792cdfddf0f7fd25a42477b1e1c157d1ca3..27b530f0743399e6f8804beb5de402159831c62d 100644 (file)
@@ -25,7 +25,6 @@ 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 */
@@ -67,15 +66,16 @@ 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 (CmsException e) {
                        throw e;
index 9bd2d2de152ed922d3821342b29945569bbd367d..39a80a2e75c1e83c66a87cc0177f8b69ca3572d7 100644 (file)
@@ -475,7 +475,16 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        // TODO this check should be done before.
                        if (role.getType() == Role.GROUP) {
                                // TODO check if the user is already member of this group
-                               myUserAdminWrapper.beginTransactionIfNeeded();
+
+                               // Remove invalid thread access errors when managing users.
+                               // myUserAdminWrapper.beginTransactionIfNeeded();
+                               event.display.asyncExec(new Runnable() {
+                                       @Override
+                                       public void run() {
+                                               myUserAdminWrapper.beginTransactionIfNeeded();
+                                       }
+                               });
+
                                Group group = (Group) role;
                                group.addMember(myUser);
                                myUserAdminWrapper.notifyListeners(new UserAdminEvent(null,
index c5b9026c74c31109febbce2bf4037a2f0ea8987c..8c8fe7234827afd70c1bc79b305595bad58a6fef 100644 (file)
@@ -10,7 +10,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.eclipse.swt.SWTException;
 import org.eclipse.ui.AbstractSourceProvider;
 import org.eclipse.ui.ISources;
 
@@ -62,10 +61,9 @@ public class UserTransactionProvider extends AbstractSourceProvider {
                try {
                        fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
                                        getInternalCurrentState());
-               } catch (SWTException e) {
-                       // FIXME
-                       log.warn("Cannot fire transaction state change event: "
-                                       + e.getMessage());
+               } catch (Exception e) {
+                       log.warn("Cannot fire transaction state change event. Caught exception: "
+                                       + e.getClass().getCanonicalName() + " - " + e.getMessage());
                }
        }