DistinguishedName implements Name { public boolean contains(DistinguishedName path) { List shortlist = path.getNames(); if (getNames().size() < shortlist.size()) { return false; } if (shortlist.size() == 0) { return false; } Iterator longiter = getNames().iterator(); Iterator shortiter = shortlist.iterator(); LdapRdn longname = (LdapRdn) longiter.next(); LdapRdn shortname = (LdapRdn) shortiter.next(); while (!longname.equals(shortname) && longiter.hasNext()) { longname = (LdapRdn) longiter.next(); } if (!shortiter.hasNext() && longname.equals(shortname)) { return true; } if (!longiter.hasNext()) { return false; } while (longname.equals(shortname) && longiter.hasNext() && shortiter.hasNext()) { longname = (LdapRdn) longiter.next(); shortname = (LdapRdn) shortiter.next(); } return !shortiter.hasNext() && longname.equals(shortname); } DistinguishedName();  DistinguishedName(String path);  DistinguishedName(List list);  DistinguishedName(Name name); LdapRdn getLdapRdn(int index); LdapRdn getLdapRdn(String key); String getValue(String key); List getNames(); String toString(); String toCompactString(); String encode(); String toUrl(); boolean contains(DistinguishedName path); DistinguishedName append(DistinguishedName path); DistinguishedName append(String key, String value); void prepend(DistinguishedName path); LdapRdn removeFirst(); void removeFirst(Name path); Object clone(); boolean equals(Object obj); int hashCode(); int compareTo(Object obj); int size(); boolean isEmpty(); Enumeration getAll(); String get(int index); Name getPrefix(int index); Name getSuffix(int index); boolean startsWith(Name name); boolean endsWith(Name name); Name addAll(Name name); Name addAll(int arg0, Name name); Name add(String string); Name add(int index, String string); Object remove(int arg0); LdapRdn removeLast(); void add(String key, String value); void add(LdapRdn rdn); void add(int idx, LdapRdn rdn); DistinguishedName immutableDistinguishedName(); static final DistinguishedName immutableDistinguishedName(String dnString); static final String SPACED_DN_FORMAT_PROPERTY; static final String KEY_CASE_FOLD_PROPERTY; static final String KEY_CASE_FOLD_LOWER; static final String KEY_CASE_FOLD_UPPER; static final String KEY_CASE_FOLD_NONE; static final DistinguishedName EMPTY_PATH; }
@Test public void testContains() { DistinguishedName migpath = new DistinguishedName("OU=G,OU=I,OU=M"); DistinguishedName path1 = new DistinguishedName("cn=john.doe, OU=Users,OU=SE,OU=G,OU=I,OU=M"); DistinguishedName path2 = new DistinguishedName("cn=john.doe, OU=Users,OU=SE,ou=G,OU=i,OU=M, ou=foo"); DistinguishedName path3 = new DistinguishedName("ou=G,OU=i,OU=M, ou=foo"); DistinguishedName path4 = new DistinguishedName("ou=G,OU=i,ou=m"); DistinguishedName pathE1 = new DistinguishedName("cn=john.doe, OU=Users,OU=SE,ou=G,OU=L,OU=M, ou=foo"); DistinguishedName pathE2 = new DistinguishedName("cn=john.doe, OU=Users,OU=SE"); assertThat(path1.contains(migpath)).isTrue(); assertThat(path2.contains(migpath)).isTrue(); assertThat(path3.contains(migpath)).isTrue(); assertThat(path4.contains(migpath)).isTrue(); assertThat(pathE1.contains(migpath)).isFalse(); assertThat(pathE2.contains(migpath)).isFalse(); }