1 package org
.argeo
.osgi
.useradmin
.cm
;
3 import java
.util
.Dictionary
;
4 import java
.util
.HashMap
;
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
;
15 public class LdapUserAdminFactory
implements ManagedServiceFactory
{
16 private final UserAdminAggregator userAdminAggregator
;
18 private Map
<String
, String
> index
= new HashMap
<String
, String
>();
20 public LdapUserAdminFactory(UserAdminAggregator userAdminAggregator
) {
21 this.userAdminAggregator
= userAdminAggregator
;
25 public String
getName() {
26 return "LDAP/LDIF User Source";
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
);
38 userAdmin
= new LdifUserAdmin(userAdminUri
);
39 userAdminAggregator
.addUserAdmin(baseDn
, userAdmin
);
40 index
.put(pid
, baseDn
);
44 public synchronized void deleted(String pid
) {
45 if (index
.containsKey(pid
))
46 userAdminAggregator
.removeUserAdmin(index
.get(pid
));
48 throw new ArgeoUserAdminException("No user admin registered for "