- // DAOs
- File nodeBaseDir = new File(getOsgiInstanceDir(), DIR_NODE);
- nodeBaseDir.mkdirs();
- String userAdminUri = getFrameworkProp(USERADMIN_URIS);
- initUserAdmins(userAdminUri, nodeBaseDir);
- String nodeRolesUri = getFrameworkProp(ROLES_URI);
- initNodeRoles(nodeRolesUri, nodeBaseDir);
-
- // Transaction manager
- ((UserDirectory) nodeRoles).setTransactionManager(transactionManager);
- for (UserAdmin userAdmin : userAdmins.values()) {
- if (userAdmin instanceof UserDirectory)
- ((UserDirectory) userAdmin)
- .setTransactionManager(transactionManager);
- }
-
- // JCR
- initJcr(adminSession);
- }
-
- Dictionary<String, ?> currentState() {
- Dictionary<String, Object> res = new Hashtable<String, Object>();
- for (LdapName name : userAdmins.keySet()) {
- StringBuilder buf = new StringBuilder();
- if (userAdmins.get(name) instanceof UserDirectory) {
- UserDirectory userDirectory = (UserDirectory) userAdmins
- .get(name);
- String uri = UserAdminConf.propertiesAsUri(
- userDirectory.getProperties()).toString();
- res.put(uri, "");
- } else {
- buf.append('/').append(name.toString())
- .append("?readOnly=true");
- }
- }
- return res;
- }
-
- public void destroy() {
- for (LdapName name : userAdmins.keySet()) {
- if (userAdmins.get(name) instanceof UserDirectory) {
- UserDirectory userDirectory = (UserDirectory) userAdmins
- .get(name);
- try {
- // FIXME Make it less bitronix dependant
- EhCacheXAResourceProducer.unregisterXAResource(cacheName,
- userDirectory.getXaResource());
- } catch (Exception e) {
- log.error("Cannot unregister resource from Bitronix", e);
- }
- userDirectory.destroy();
-
- }
- }
- }
-
- @Override
- public Role createRole(String name, int type) {
- return findUserAdmin(name).createRole(name, type);
- }
-
- @Override
- public boolean removeRole(String name) {
- boolean actuallyDeleted = findUserAdmin(name).removeRole(name);
- nodeRoles.removeRole(name);
- return actuallyDeleted;