package org.argeo.osgi.useradmin;
-import static org.argeo.osgi.useradmin.LdifName.inetOrgPerson;
-import static org.argeo.osgi.useradmin.LdifName.objectClass;
+import static org.argeo.naming.LdapAttrs.objectClass;
+import static org.argeo.naming.LdapObjs.inetOrgPerson;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.HashSet;
import javax.naming.ldap.LdapName;
import javax.transaction.TransactionManager;
-import org.argeo.util.naming.LdifParser;
-import org.argeo.util.naming.LdifWriter;
+import org.argeo.naming.LdifParser;
+import org.argeo.naming.LdifWriter;
import org.osgi.framework.Filter;
import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
/**
* A user admin based on a LDIF files. Requires a {@link TransactionManager} and
}
public LdifUserAdmin(Dictionary<String, ?> properties) {
- super(properties);
+ super(null, properties);
}
+ public LdifUserAdmin(URI uri, Dictionary<String, ?> properties) {
+ super(uri, properties);
+ }
+
+ @Deprecated
public LdifUserAdmin(InputStream in) {
- super(new Hashtable<String, Object>());
+ super(null, new Hashtable<String, Object>());
load(in);
}
+ @Override
+ protected AbstractUserDirectory scope(User user) {
+ Dictionary<String, Object> properties = cloneProperties();
+ properties.put(UserAdminConf.readOnly.name(), "true");
+ return new LdifUserAdmin(properties);
+ }
+
private static Dictionary<String, Object> fromUri(String uri, String baseDn) {
Hashtable<String, Object> res = new Hashtable<String, Object>();
res.put(UserAdminConf.uri.name(), uri);