+ private final boolean isReadOnly;
+ private final URI uri;
+
+ private List<String> indexedUserProperties = Arrays.asList(new String[] {
+ "uid", "mail", "cn" });
+ private Map<String, Map<String, LdifUser>> userIndexes = new LinkedHashMap<String, Map<String, LdifUser>>();
+
+ public LdifUserAdmin(String uri) {
+ this(uri, true);
+ }
+
+ public LdifUserAdmin(String uri, boolean isReadOnly) {
+ this.isReadOnly = isReadOnly;
+ try {
+ this.uri = new URI(uri);
+ } catch (URISyntaxException e) {
+ throw new ArgeoUserAdminException("Invalid URI " + uri, e);
+ }
+
+ if (!isReadOnly && !this.uri.getScheme().equals("file:"))
+ throw new UnsupportedOperationException(this.uri.getScheme()
+ + "not supported read-write.");
+
+ try {
+ load(this.uri.toURL().openStream());
+ } catch (Exception e) {
+ throw new ArgeoUserAdminException("Cannot open URL " + this.uri, e);
+ }
+ }
+