]> git.argeo.org Git - lgpl/argeo-commons.git/blob - LdapNameUtils.java
7e763456a54cb846097ec12ff40b6cc55636c3cf
[lgpl/argeo-commons.git] / LdapNameUtils.java
1 package org.argeo.osgi.useradmin;
2
3 import javax.naming.InvalidNameException;
4 import javax.naming.ldap.LdapName;
5 import javax.naming.ldap.Rdn;
6
7 /** Utilities to simplify using {@link LdapName}. */
8 class LdapNameUtils {
9
10 static LdapName relativeName(LdapName prefix, LdapName dn) {
11 try {
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++) {
16 res.remove(0);
17 }
18 return res;
19 } catch (InvalidNameException e) {
20 throw new IllegalStateException("Cannot find realtive name", e);
21 }
22 }
23
24 static LdapName getParent(LdapName dn) {
25 try {
26 LdapName parent = (LdapName) dn.clone();
27 parent.remove(parent.size() - 1);
28 return parent;
29 } catch (InvalidNameException e) {
30 throw new IllegalArgumentException("Cannot get parent of " + dn, e);
31 }
32 }
33
34 static Rdn getParentRdn(LdapName dn) {
35 if (dn.size() < 2)
36 throw new IllegalArgumentException(dn + " has no parent");
37 Rdn parentRdn = dn.getRdn(dn.size() - 2);
38 return parentRdn;
39 }
40
41 static LdapName toLdapName(String distinguishedName) {
42 try {
43 return new LdapName(distinguishedName);
44 } catch (InvalidNameException e) {
45 throw new IllegalArgumentException("Cannot parse " + distinguishedName + " as LDAP name", e);
46 }
47 }
48
49 static Rdn getLastRdn(LdapName dn) {
50 return dn.getRdn(dn.size() - 1);
51 }
52
53 static String getLastRdnAsString(LdapName dn) {
54 return getLastRdn(dn).toString();
55 }
56
57 static String getLastRdnValue(LdapName dn) {
58 return getLastRdn(dn).getValue().toString();
59 }
60
61 /** singleton */
62 private LdapNameUtils() {
63
64 }
65 }