]> git.argeo.org Git - lgpl/argeo-commons.git/blob - LdapUserAdminFactory.java
64fdea0b051afad187ef0f768cbd804153e24653
[lgpl/argeo-commons.git] / LdapUserAdminFactory.java
1 package org.argeo.osgi.useradmin.cm;
2
3 import java.util.Dictionary;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import org.argeo.osgi.useradmin.AbstractLdapUserAdmin;
8 import org.argeo.osgi.useradmin.ArgeoUserAdminException;
9 import org.argeo.osgi.useradmin.LdapUserAdmin;
10 import org.argeo.osgi.useradmin.LdifUserAdmin;
11 import org.argeo.osgi.useradmin.UserAdminAggregator;
12 import org.osgi.service.cm.ConfigurationException;
13 import org.osgi.service.cm.ManagedServiceFactory;
14
15 public class LdapUserAdminFactory implements ManagedServiceFactory {
16 private final UserAdminAggregator userAdminAggregator;
17
18 private Map<String, String> index = new HashMap<String, String>();
19
20 public LdapUserAdminFactory(UserAdminAggregator userAdminAggregator) {
21 this.userAdminAggregator = userAdminAggregator;
22 }
23
24 @Override
25 public String getName() {
26 return "LDAP/LDIF User Source";
27 }
28
29 @Override
30 public synchronized void updated(String pid,
31 Dictionary<String, ?> properties) throws ConfigurationException {
32 String baseDn = properties.get("baseDn").toString();
33 String userAdminUri = properties.get("uri").toString();
34 AbstractLdapUserAdmin userAdmin;
35 if (userAdminUri.startsWith("ldap"))
36 userAdmin = new LdapUserAdmin(userAdminUri);
37 else
38 userAdmin = new LdifUserAdmin(userAdminUri);
39 userAdminAggregator.addUserAdmin(baseDn, userAdmin);
40 index.put(pid, baseDn);
41 }
42
43 @Override
44 public synchronized void deleted(String pid) {
45 if (index.containsKey(pid))
46 userAdminAggregator.removeUserAdmin(index.get(pid));
47 else
48 throw new ArgeoUserAdminException("No user admin registered for "
49 + pid);
50 index.remove(pid);
51 }
52
53 }