1 package org
.argeo
.osgi
.useradmin
.internal
;
3 import java
.util
.Dictionary
;
4 import java
.util
.HashMap
;
5 import java
.util
.Hashtable
;
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
;
18 public class UserDirectoryFactory
implements ManagedServiceFactory
{
19 private final BundleContext bc
= FrameworkUtil
.getBundle(UserDirectoryFactory
.class).getBundleContext();
21 private Map
<String
, UserDirectory
> userDirectories
= new HashMap
<>();
24 public String
getName() {
25 return "User Directories Factory";
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
);
41 public void deleted(String pid
) {
42 userDirectories
.remove(pid
);