X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2FUserTransactionProvider.java;h=a3af53e63e478b6639e53b1f43f6662e27f0d56e;hb=cd2948994931fcb43283ffb30c1058d5860dec68;hp=3a57c59adf347c67e8bc340b99862bb256f87e23;hpb=eec0cd2b46a2186b4df1b1a59962c81ae2a9bcb7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserTransactionProvider.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserTransactionProvider.java index 3a57c59ad..a3af53e63 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserTransactionProvider.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserTransactionProvider.java @@ -11,15 +11,13 @@ import org.argeo.security.ui.admin.SecurityAdminPlugin; import org.eclipse.ui.AbstractSourceProvider; import org.eclipse.ui.ISources; -/** Centralize interaction with the UserTransaction among the UI */ +/** Notifies the UI on UserTransaction state change */ public class UserTransactionProvider extends AbstractSourceProvider { public final static String TRANSACTION_STATE = SecurityAdminPlugin.PLUGIN_ID + ".userTransactionState"; public final static String STATUS_ACTIVE = "status.active"; public final static String STATUS_NO_TRANSACTION = "status.noTransaction"; - private String transactionState = STATUS_NO_TRANSACTION; - /* DEPENDENCY INJECTION */ private UserTransaction userTransaction; @@ -31,10 +29,7 @@ public class UserTransactionProvider extends AbstractSourceProvider { @Override public Map getCurrentState() { Map currentState = new HashMap(1); - // TODO implement asking to the UserTransaction - // String transactionState = isActive ? STATUS_ACTIVE : - // STATUS_NO_TRANSACTION; - currentState.put(TRANSACTION_STATE, transactionState); + currentState.put(TRANSACTION_STATE, getInternalCurrentState()); return currentState; } @@ -42,23 +37,15 @@ public class UserTransactionProvider extends AbstractSourceProvider { public void dispose() { } - /** Publish the ability to change the state. */ - public void setUserTransactionState(String newState) { - transactionState = newState; - // fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE, - // transactionState); - } - - private void refreshState() { + private String getInternalCurrentState() { try { - if (userTransaction != null) { - if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) - transactionState = STATUS_NO_TRANSACTION; - else if (userTransaction.getStatus() == Status.STATUS_ACTIVE) - transactionState = STATUS_ACTIVE; - fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE, - transactionState); - } + String transactionState; + if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) + transactionState = STATUS_NO_TRANSACTION; + else + // if (userTransaction.getStatus() == Status.STATUS_ACTIVE) + transactionState = STATUS_ACTIVE; + return transactionState; } catch (Exception e) { throw new ArgeoException("Unable to begin transaction", e); } @@ -66,14 +53,12 @@ public class UserTransactionProvider extends AbstractSourceProvider { /** Publish the ability to notify a state change */ public void fireTransactionStateChange() { - refreshState(); + fireSourceChanged(ISources.WORKBENCH, TRANSACTION_STATE, + getInternalCurrentState()); } - /** FIXME: Rather inject the UserTransaction. */ - @Deprecated + /* DEPENDENCY INJECTION */ public void setUserTransaction(UserTransaction userTransaction) { this.userTransaction = userTransaction; - // dirty init - refreshState(); } } \ No newline at end of file