- 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();
-
- }
+ Object realm = userDirectory.getProperties().get(UserAdminConf.realm.name());
+ addUserDirectory(userDirectory);
+
+ // OSGi
+ LdapName baseDn = userDirectory.getBaseDn();
+ Dictionary<String, Object> regProps = new Hashtable<>();
+ regProps.put(Constants.SERVICE_PID, pid);
+ if (isSystemRolesBaseDn(baseDn))
+ regProps.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
+ regProps.put(UserAdminConf.baseDn.name(), baseDn);
+ // ServiceRegistration<UserDirectory> reg =
+ // bc.registerService(UserDirectory.class, userDirectory, regProps);
+ Activator.registerService(UserDirectory.class, userDirectory, regProps);
+ pidToBaseDn.put(pid, baseDn);
+ // pidToServiceRegs.put(pid, reg);
+
+ if (log.isDebugEnabled())
+ log.debug("User directory " + userDirectory.getBaseDn() + " [" + u.getScheme() + "] enabled."
+ + (realm != null ? " " + realm + " realm." : ""));
+
+ if (isSystemRolesBaseDn(baseDn)) {
+ // publishes only when system roles are available
+ Dictionary<String, Object> userAdminregProps = new Hashtable<>();
+ userAdminregProps.put(NodeConstants.CN, NodeConstants.DEFAULT);
+ userAdminregProps.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
+ Activator.registerService(UserAdmin.class, this, userAdminregProps);