1 package org
.argeo
.cms
.internal
.kernel
;
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 class UserDirectoryServiceFactory
implements ManagedServiceFactory
{
19 private final BundleContext bc
= FrameworkUtil
.getBundle(UserDirectoryServiceFactory
.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 String baseDn
= userDirectory
.getBaseDn();
34 Dictionary
<String
, Object
> regProps
= new Hashtable
<>();
35 regProps
.put(Constants
.SERVICE_PID
, pid
);
36 regProps
.put(UserAdminConf
.baseDn
.name(), baseDn
);
37 // regProps.put(UserAdminConf.uri.name(), uri);
38 bc
.registerService(UserDirectory
.class, userDirectory
, regProps
);
39 userDirectories
.put(pid
, userDirectory
);
43 public void deleted(String pid
) {
44 userDirectories
.remove(pid
);
48 for (UserDirectory userDirectory
: userDirectories
.values())
49 userDirectory
.destroy();