]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.core/src/org/argeo/osgi/useradmin/internal/UserDirectoryFactory.java
Continue framework clean up.
[lgpl/argeo-commons.git] / org.argeo.security.core / src / org / argeo / osgi / useradmin / internal / UserDirectoryFactory.java
1 package org.argeo.osgi.useradmin.internal;
2
3 import java.util.Dictionary;
4 import java.util.HashMap;
5 import java.util.Hashtable;
6 import java.util.Map;
7
8 import org.argeo.osgi.useradmin.LdapUserAdmin;
9 import org.argeo.osgi.useradmin.LdifUserAdmin;
10 import org.argeo.osgi.useradmin.UserAdminConf;
11 import org.argeo.osgi.useradmin.UserDirectory;
12 import org.osgi.framework.BundleContext;
13 import org.osgi.framework.Constants;
14 import org.osgi.framework.FrameworkUtil;
15 import org.osgi.service.cm.ConfigurationException;
16 import org.osgi.service.cm.ManagedServiceFactory;
17
18 public class UserDirectoryFactory implements ManagedServiceFactory {
19 private final BundleContext bc = FrameworkUtil.getBundle(UserDirectoryFactory.class).getBundleContext();
20
21 private Map<String, UserDirectory> userDirectories = new HashMap<>();
22
23 @Override
24 public String getName() {
25 return "User Directories Factory";
26 }
27
28 @Override
29 public void updated(String pid, Dictionary<String, ?> properties) throws ConfigurationException {
30 String uri = (String) properties.get(UserAdminConf.uri.name());
31 UserDirectory userDirectory = uri.startsWith("ldap:") ? new LdapUserAdmin(properties)
32 : new LdifUserAdmin(properties);
33 Dictionary<String, Object> regProps = new Hashtable<>();
34 regProps.put(Constants.SERVICE_PID, pid);
35 regProps.put(UserAdminConf.uri.name(), uri);
36 bc.registerService(UserDirectory.class, userDirectory, regProps);
37 userDirectories.put(pid, userDirectory);
38 }
39
40 @Override
41 public void deleted(String pid) {
42 userDirectories.remove(pid);
43 }
44
45 }