]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/directory/ldap/LdapNameUtils.java
1 package org
.argeo
.cms
.directory
.ldap
;
3 import javax
.naming
.InvalidNameException
;
4 import javax
.naming
.ldap
.LdapName
;
5 import javax
.naming
.ldap
.Rdn
;
7 /** Utilities to simplify using {@link LdapName}. */
8 public class LdapNameUtils
{
10 public static LdapName
relativeName(LdapName prefix
, LdapName dn
) {
12 if (!dn
.startsWith(prefix
))
13 throw new IllegalArgumentException("Prefix " + prefix
+ " not consistent with " + dn
);
14 LdapName res
= (LdapName
) dn
.clone();
15 for (int i
= 0; i
< prefix
.size(); i
++) {
19 } catch (InvalidNameException e
) {
20 throw new IllegalStateException("Cannot find realtive name", e
);
24 public static LdapName
getParent(LdapName dn
) {
26 LdapName parent
= (LdapName
) dn
.clone();
27 parent
.remove(parent
.size() - 1);
29 } catch (InvalidNameException e
) {
30 throw new IllegalArgumentException("Cannot get parent of " + dn
, e
);
34 public static Rdn
getParentRdn(LdapName dn
) {
36 throw new IllegalArgumentException(dn
+ " has no parent");
37 Rdn parentRdn
= dn
.getRdn(dn
.size() - 2);
41 public static LdapName
toLdapName(String distinguishedName
) {
43 return new LdapName(distinguishedName
);
44 } catch (InvalidNameException e
) {
45 throw new IllegalArgumentException("Cannot parse " + distinguishedName
+ " as LDAP name", e
);
49 public static Rdn
getLastRdn(LdapName dn
) {
50 return dn
.getRdn(dn
.size() - 1);
53 public static String
getLastRdnAsString(LdapName dn
) {
54 return getLastRdn(dn
).toString();
57 public static String
getLastRdnValue(String dn
) {
58 return getLastRdnValue(toLdapName(dn
));
61 public static String
getLastRdnValue(LdapName dn
) {
62 return getLastRdn(dn
).getValue().toString();
66 private LdapNameUtils() {