37 38 private final String name; // DN being parsed 39 private final char[] chars; // characters in LDAP name being parsed 40 private final int len; // length of "chars" 41 private int cur = 0; // index of first unconsumed char in "chars" 42 43 /* 44 * Given an LDAP DN in string form, returns a parser for it. 45 */ 46 Rfc2253Parser(String name) { 47 this.name = name; 48 len = name.length(); 49 chars = name.toCharArray(); 50 } 51 52 /* 53 * Parses the DN, returning a List of its RDNs. 54 */ 55 // public List<Rdn> getDN() throws InvalidNameException { 56 57 List parseDn() throws InvalidNameException { 58 cur = 0; 59 60 // ArrayList<Rdn> rdns = 61 // new ArrayList<Rdn>(len / 3 + 10); // leave room for growth 62 63 ArrayList rdns = 64 new ArrayList(len / 3 + 10); // leave room for growth 65 66 if (len == 0) { 67 return rdns; 68 } 69 70 rdns.add(doParse(new Rdn())); 71 while (cur < len) { 72 if (chars[cur] == ',' || chars[cur] == ';') { 73 ++cur; 74 rdns.add(0, doParse(new Rdn())); 75 } else { 76 throw new InvalidNameException("Invalid name: " + name); 77 } 78 } 79 return rdns; 80 } 81 82 /* 83 * Parses the DN, if it is known to contain a single RDN. 84 */ | 37 38 private final String name; // DN being parsed 39 private final char[] chars; // characters in LDAP name being parsed 40 private final int len; // length of "chars" 41 private int cur = 0; // index of first unconsumed char in "chars" 42 43 /* 44 * Given an LDAP DN in string form, returns a parser for it. 45 */ 46 Rfc2253Parser(String name) { 47 this.name = name; 48 len = name.length(); 49 chars = name.toCharArray(); 50 } 51 52 /* 53 * Parses the DN, returning a List of its RDNs. 54 */ 55 // public List<Rdn> getDN() throws InvalidNameException { 56 57 List<Rdn> parseDn() throws InvalidNameException { 58 cur = 0; 59 60 // ArrayList<Rdn> rdns = 61 // new ArrayList<Rdn>(len / 3 + 10); // leave room for growth 62 63 ArrayList<Rdn> rdns = 64 new ArrayList<>(len / 3 + 10); // leave room for growth 65 66 if (len == 0) { 67 return rdns; 68 } 69 70 rdns.add(doParse(new Rdn())); 71 while (cur < len) { 72 if (chars[cur] == ',' || chars[cur] == ';') { 73 ++cur; 74 rdns.add(0, doParse(new Rdn())); 75 } else { 76 throw new InvalidNameException("Invalid name: " + name); 77 } 78 } 79 return rdns; 80 } 81 82 /* 83 * Parses the DN, if it is known to contain a single RDN. 84 */ |