]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserTransactionProvider.java
Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / providers / UserTransactionProvider.java
index 877e5641fae1a34398da99f464eb6a3cedbb9c56..4ba304bb5f09082896ad951cf0befe1ce2e7919a 100644 (file)
@@ -6,13 +6,18 @@ import java.util.Map;
 import javax.transaction.Status;
 import javax.transaction.UserTransaction;
 
-import org.argeo.ArgeoException;
+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.ui.AbstractSourceProvider;
 import org.eclipse.ui.ISources;
 
-/** Notifies the UI on UserTransaction state change */
+/** Observe and notify UI on UserTransaction state changes */
 public class UserTransactionProvider extends AbstractSourceProvider {
+       private final static Log log = LogFactory
+                       .getLog(UserTransactionProvider.class);
+
        public final static String TRANSACTION_STATE = SecurityAdminPlugin.PLUGIN_ID
                        + ".userTransactionState";
        public final static String STATUS_ACTIVE = "status.active";
@@ -23,13 +28,13 @@ public class UserTransactionProvider extends AbstractSourceProvider {
 
        @Override
        public String[] getProvidedSourceNames() {
-               return new String[] { TRANSACTION_STATE };
+               return new String[] { TRANSACTION_STATE};
        }
 
        @Override
        public Map<String, String> getCurrentState() {
                Map<String, String> currentState = new HashMap<String, String>(1);
-               currentState.put(TRANSACTION_STATE, getInternalCurrentState());
+                       currentState.put(TRANSACTION_STATE, getInternalCurrentState());
                return currentState;
        }
 
@@ -47,14 +52,19 @@ public class UserTransactionProvider extends AbstractSourceProvider {
                                transactionState = STATUS_ACTIVE;
                        return transactionState;
                } catch (Exception e) {
-                       throw new ArgeoException("Unable to begin transaction", e);
+                       throw new CmsException("Unable to begin transaction", e);
                }
        }
 
-       /** Publish the ability to notify a state change */
+       /** Publishes the ability to notify a state change */
        public void fireTransactionStateChange() {
-               fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
-                               getInternalCurrentState());
+               try {
+                       fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE,
+                                       getInternalCurrentState());
+               } catch (Exception e) {
+                       log.warn("Cannot fire transaction state change event. Caught exception: "
+                                       + e.getClass().getCanonicalName() + " - " + e.getMessage());
+               }
        }
 
        /* DEPENDENCY INJECTION */