X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FUserAdminConf.java;h=001d8e8bdea116e51a7a1a304cd4f71820ba17c4;hb=164c1973ae47df75031cc55b15b52de0226ff035;hp=bb7345f0b1ca51854434db0aad51348915763fab;hpb=438237c2b8c995d4f9562d53bfe4ea63c4442054;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/UserAdminConf.java b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/UserAdminConf.java index bb7345f0b..001d8e8bd 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/UserAdminConf.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/UserAdminConf.java @@ -6,7 +6,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; import java.util.Dictionary; -import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -17,7 +16,6 @@ import javax.naming.ldap.LdapName; import org.argeo.naming.DnsBrowser; import org.argeo.naming.NamingUtils; -import org.osgi.framework.Constants; /** Properties used to configure user admins. */ public enum UserAdminConf { @@ -102,22 +100,39 @@ public enum UserAdminConf { StringBuilder query = new StringBuilder(); boolean first = true; - for (Enumeration keys = properties.keys(); keys.hasMoreElements();) { - String key = keys.nextElement(); - // TODO clarify which keys are relevant (list only the enum?) - if (!key.equals("service.factoryPid") && !key.equals("cn") && !key.equals("dn") - && !key.equals(Constants.SERVICE_PID) && !key.startsWith("java") && !key.equals(baseDn.name()) - && !key.equals(uri.name())) { - if (first) - first = false; - else - query.append('&'); - query.append(valueOf(key).name()); - query.append('=').append(properties.get(key).toString()); - } +// for (Enumeration keys = properties.keys(); keys.hasMoreElements();) { +// String key = keys.nextElement(); +// // TODO clarify which keys are relevant (list only the enum?) +// if (!key.equals("service.factoryPid") && !key.equals("cn") && !key.equals("dn") +// && !key.equals(Constants.SERVICE_PID) && !key.startsWith("java") && !key.equals(baseDn.name()) +// && !key.equals(uri.name()) && !key.equals(Constants.OBJECTCLASS) +// && !key.equals(Constants.SERVICE_ID) && !key.equals("bundle.id")) { +// if (first) +// first = false; +// else +// query.append('&'); +// query.append(valueOf(key).name()); +// query.append('=').append(properties.get(key).toString()); +// } +// } + + keys: for (UserAdminConf key : UserAdminConf.values()) { + if (key.equals(baseDn) || key.equals(uri)) + continue keys; + Object value = properties.get(key.name()); + if (value == null) + continue keys; + if (first) + first = false; + else + query.append('&'); + query.append(key.name()); + query.append('=').append(value.toString()); + } - String bDn = (String) properties.get(baseDn.name()); + Object bDnObj = properties.get(baseDn.name()); + String bDn = bDnObj != null ? bDnObj.toString() : null; try { return new URI(null, null, bDn != null ? '/' + bDn : null, query.length() != 0 ? query.toString() : null, null);