- final static LdapName ROLES_BASE;
- static {
- try {
- ROLES_BASE = new LdapName(AuthConstants.ROLES_BASEDN);
- } catch (InvalidNameException e) {
- throw new UserDirectoryException("Cannot initialize "
- + NodeUserAdmin.class, e);
- }
- }
-
- // DAOs
- private UserAdmin nodeRoles = null;
- private Map<LdapName, UserAdmin> userAdmins = new HashMap<LdapName, UserAdmin>();
-
- // JCR
- /** The home base path. */
- private String homeBasePath = "/home";
- private String peopleBasePath = ArgeoJcrConstants.PEOPLE_BASE_PATH;
- private Repository repository;
- private Session adminSession;
-
- public NodeUserAdmin(TransactionManager transactionManager,
- Repository repository) {
- this.repository = repository;
- try {
- this.adminSession = this.repository.login();
- } catch (RepositoryException e) {
- throw new CmsException("Cannot log-in", e);
- }
-
- // DAOs
- File nodeBaseDir = new File(getOsgiInstanceDir(), "node");
- nodeBaseDir.mkdirs();
- String userAdminUri = getFrameworkProp(KernelConstants.USERADMIN_URIS);
- initUserAdmins(userAdminUri, nodeBaseDir);
- String nodeRolesUri = getFrameworkProp(KernelConstants.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;
- }