1 package org
.argeo
.security
.ui
.admin
.internal
;
3 import java
.util
.ArrayList
;
6 import javax
.transaction
.Status
;
7 import javax
.transaction
.UserTransaction
;
9 import org
.argeo
.cms
.CmsException
;
10 import org
.osgi
.service
.useradmin
.UserAdminEvent
;
11 import org
.osgi
.service
.useradmin
.UserAdminListener
;
13 /** Centralize interaction with the UserAdmin in this bundle */
14 public class UserAdminWrapper
extends
15 org
.argeo
.cms
.util
.useradmin
.UserAdminWrapper
{
16 // private Log log = LogFactory.getLog(UserAdminWrapper.class);
18 // Registered listeners
19 List
<UserAdminListener
> listeners
= new ArrayList
<UserAdminListener
>();
22 * Overwrite the normal begin transaction behaviour to also notify the UI.
23 * Must be called from the UI Thread.
25 public UserTransaction
beginTransactionIfNeeded() {
27 UserTransaction userTransaction
= getUserTransaction();
28 if (userTransaction
.getStatus() == Status
.STATUS_NO_TRANSACTION
) {
29 userTransaction
.begin();
30 UiAdminUtils
.notifyTransactionStateChange(userTransaction
);
32 return userTransaction
;
33 } catch (Exception e
) {
34 throw new CmsException("Unable to begin transaction", e
);
38 // TODO implement safer mechanism
39 public void addListener(UserAdminListener userAdminListener
) {
40 if (!listeners
.contains(userAdminListener
))
41 listeners
.add(userAdminListener
);
45 public void removeListener(UserAdminListener userAdminListener
) {
46 if (listeners
.contains(userAdminListener
))
47 listeners
.remove(userAdminListener
);
50 public void notifyListeners(UserAdminEvent event
) {
51 for (UserAdminListener listener
: listeners
)
52 listener
.roleChanged(event
);