mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
07.25.2012 d542c7686b850b6660d67ec1dfc4ce2f4fbf3764
Fix OPENDJ-485: Simplify SDK Filter static factory method names.
9 files modified
216 ■■■■ changed files
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPUtils.java 26 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/AbstractConnection.java 4 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Filter.java 116 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java 2 ●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/RootDSE.java 2 ●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/controls/AccountUsabilityRequestControlTestCase.java 2 ●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/controls/AccountUsabilityResponseControlTestCase.java 4 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/FilterTestCase.java 44 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPUrlTestCase.java 16 ●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPUtils.java
@@ -267,13 +267,13 @@
            return decodeSubstringsFilter(reader);
        case TYPE_FILTER_PRESENCE:
            return Filter.newPresentFilter(reader.readOctetStringAsString(type));
            return Filter.present(reader.readOctetStringAsString(type));
        case TYPE_FILTER_EXTENSIBLE_MATCH:
            return decodeExtensibleMatchFilter(reader);
        default:
            return Filter.newUnrecognizedFilter(type, reader.readOctetString(type));
            return Filter.unrecognized(type, reader.readOctetString(type));
        }
    }
@@ -349,10 +349,10 @@
                do {
                    subFilters.add(decodeFilter(reader));
                } while (reader.hasNextElement());
                filter = Filter.newAndFilter(subFilters);
                filter = Filter.and(subFilters);
            } else {
                // No sub-filters - this is an RFC 4526 absolute true filter.
                filter = Filter.getAbsoluteTrueFilter();
                filter = Filter.alwaysTrue();
            }
        } finally {
            reader.readEndSequence();
@@ -374,7 +374,7 @@
            reader.readEndSequence();
        }
        return Filter.newApproxMatchFilter(attributeDescription, assertionValue);
        return Filter.approx(attributeDescription, assertionValue);
    }
    // Decodes an equality match filter.
@@ -390,7 +390,7 @@
            reader.readEndSequence();
        }
        return Filter.newEqualityMatchFilter(attributeDescription, assertionValue);
        return Filter.equality(attributeDescription, assertionValue);
    }
    // Decodes an extensible match filter.
@@ -419,7 +419,7 @@
            reader.readEndSequence();
        }
        return Filter.newExtensibleMatchFilter(matchingRule, attributeDescription, assertionValue,
        return Filter.extensible(matchingRule, attributeDescription, assertionValue,
                dnAttributes);
    }
@@ -436,7 +436,7 @@
        } finally {
            reader.readEndSequence();
        }
        return Filter.newGreaterOrEqualFilter(attributeDescription, assertionValue);
        return Filter.greaterOrEqual(attributeDescription, assertionValue);
    }
    // Decodes a less than or equal filter.
@@ -452,7 +452,7 @@
            reader.readEndSequence();
        }
        return Filter.newLessOrEqualFilter(attributeDescription, assertionValue);
        return Filter.lessOrEqual(attributeDescription, assertionValue);
    }
    // Decodes a not filter.
@@ -466,7 +466,7 @@
            reader.readEndSequence();
        }
        return Filter.newNotFilter(subFilter);
        return Filter.not(subFilter);
    }
    // Decodes an or filter.
@@ -480,10 +480,10 @@
                do {
                    subFilters.add(decodeFilter(reader));
                } while (reader.hasNextElement());
                filter = Filter.newOrFilter(subFilters);
                filter = Filter.or(subFilters);
            } else {
                // No sub-filters - this is an RFC 4526 absolute false filter.
                filter = Filter.getAbsoluteFalseFilter();
                filter = Filter.alwaysFalse();
            }
        } finally {
            reader.readEndSequence();
@@ -529,7 +529,7 @@
            anySubstrings = Collections.emptyList();
        }
        return Filter.newSubstringsFilter(attributeDescription, initialSubstring, anySubstrings,
        return Filter.substrings(attributeDescription, initialSubstring, anySubstrings,
                finalSubstring);
    }
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/AbstractConnection.java
@@ -304,7 +304,7 @@
            throws ErrorResultException {
        final SearchRequest request =
                Requests.newSearchRequest(baseObject, SearchScope.BASE_OBJECT, Filter
                        .getObjectClassPresentFilter(), attributeDescriptions);
                        .objectClassPresent(), attributeDescriptions);
        return searchSingleEntry(request);
    }
@@ -326,7 +326,7 @@
            final ResultHandler<? super SearchResultEntry> handler) {
        final SearchRequest request =
                Requests.newSearchRequest(name, SearchScope.BASE_OBJECT, Filter
                        .getObjectClassPresentFilter());
                        .objectClassPresent());
        if (attributeDescriptions != null) {
            request.getAttributes().addAll(attributeDescriptions);
        }
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Filter.java
@@ -57,6 +57,15 @@
 * The RFC 4515 string representation of a filter can be generated using the
 * {@link #toString} methods and parsed using the {@link #valueOf(String)}
 * factory method.
 * <p>
 * Filters can be constructed using the various factory methods. For example,
 * the following code illustrates how to create a filter having the string
 * representation {code}(&(cn=bjensen)(age>=21)){code}:
 * <pre>
 * import static org.forgerock.opendj.Filter.*;
 *
 * Filter filter = and(equality("cn", "bjensen"), greaterOrEqual("age", 21));
 * <pre>
 *
 * @see <a href="http://tools.ietf.org/html/rfc4511">RFC 4511 - Lightweight
 *      Directory Access Protocol (LDAP): The Protocol </a>
@@ -425,7 +434,7 @@
     * @return The absolute false filter.
     * @see <a href="http://tools.ietf.org/html/rfc4526">RFC 4526</a>
     */
    public static Filter getAbsoluteFalseFilter() {
    public static Filter alwaysFalse() {
        return FALSE;
    }
@@ -436,40 +445,24 @@
     * @return The absolute true filter.
     * @see <a href="http://tools.ietf.org/html/rfc4526">RFC 4526</a>
     */
    public static Filter getAbsoluteTrueFilter() {
    public static Filter alwaysTrue() {
        return TRUE;
    }
    /**
     * Returns the {@code objectClass} presence filter {@code (objectClass=*)}.
     * <p>
     * A call to this method is equivalent to but more efficient than the
     * following code:
     *
     * <pre>
     * Filter.present(&quot;objectClass&quot;);
     * </pre>
     *
     * @return The {@code objectClass} presence filter {@code (objectClass=*)}.
     */
    public static Filter getObjectClassPresentFilter() {
        return OBJECT_CLASS_PRESENT;
    }
    /**
     * Creates a new {@code and} filter using the provided list of sub-filters.
     * <p>
     * Creating a new {@code and} filter with a {@code null} or empty list of
     * sub-filters is equivalent to calling {@link #getAbsoluteTrueFilter()}.
     * sub-filters is equivalent to calling {@link #alwaysTrue()}.
     *
     * @param subFilters
     *            The list of sub-filters, may be empty or {@code null}.
     * @return The newly created {@code and} filter.
     */
    public static Filter newAndFilter(final Collection<Filter> subFilters) {
    public static Filter and(final Collection<Filter> subFilters) {
        if (subFilters == null || subFilters.isEmpty()) {
            // RFC 4526 - TRUE filter.
            return getAbsoluteTrueFilter();
            return alwaysTrue();
        } else if (subFilters.size() == 1) {
            final Filter subFilter = subFilters.iterator().next();
            Validator.ensureNotNull(subFilter);
@@ -488,16 +481,16 @@
     * Creates a new {@code and} filter using the provided list of sub-filters.
     * <p>
     * Creating a new {@code and} filter with a {@code null} or empty list of
     * sub-filters is equivalent to calling {@link #getAbsoluteTrueFilter()}.
     * sub-filters is equivalent to calling {@link #alwaysTrue()}.
     *
     * @param subFilters
     *            The list of sub-filters, may be empty or {@code null}.
     * @return The newly created {@code and} filter.
     */
    public static Filter newAndFilter(final Filter... subFilters) {
    public static Filter and(final Filter... subFilters) {
        if ((subFilters == null) || (subFilters.length == 0)) {
            // RFC 4526 - TRUE filter.
            return getAbsoluteTrueFilter();
            return alwaysTrue();
        } else if (subFilters.length == 1) {
            Validator.ensureNotNull(subFilters[0]);
            return new Filter(new AndImpl(Collections.singletonList(subFilters[0])));
@@ -521,8 +514,7 @@
     *            The assertion value.
     * @return The newly created {@code approximate match} filter.
     */
    public static Filter newApproxMatchFilter(final String attributeDescription,
            final ByteString assertionValue) {
    public static Filter approx(final String attributeDescription, final ByteString assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new ApproxMatchImpl(attributeDescription, assertionValue));
    }
@@ -540,8 +532,7 @@
     *            The assertion value.
     * @return The newly created {@code approximate match} filter.
     */
    public static Filter newApproxMatchFilter(final String attributeDescription,
            final Object assertionValue) {
    public static Filter approx(final String attributeDescription, final Object assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new ApproxMatchImpl(attributeDescription, ByteString
                .valueOf(assertionValue)));
@@ -557,8 +548,7 @@
     *            The assertion value.
     * @return The newly created {@code equality match} filter.
     */
    public static Filter newEqualityMatchFilter(final String attributeDescription,
            final ByteString assertionValue) {
    public static Filter equality(final String attributeDescription, final ByteString assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new EqualityMatchImpl(attributeDescription, assertionValue));
    }
@@ -576,8 +566,7 @@
     *            The assertion value.
     * @return The newly created {@code equality match} filter.
     */
    public static Filter newEqualityMatchFilter(final String attributeDescription,
            final Object assertionValue) {
    public static Filter equality(final String attributeDescription, final Object assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new EqualityMatchImpl(attributeDescription, ByteString
                .valueOf(assertionValue)));
@@ -598,9 +587,8 @@
     *            Indicates whether DN matching should be performed.
     * @return The newly created {@code extensible match} filter.
     */
    public static Filter newExtensibleMatchFilter(final String matchingRule,
            final String attributeDescription, final ByteString assertionValue,
            final boolean dnAttributes) {
    public static Filter extensible(final String matchingRule, final String attributeDescription,
            final ByteString assertionValue, final boolean dnAttributes) {
        Validator.ensureTrue((matchingRule != null) || (attributeDescription != null),
                "matchingRule and/or " + "attributeDescription must not be null");
        Validator.ensureNotNull(assertionValue);
@@ -626,9 +614,8 @@
     *            Indicates whether DN matching should be performed.
     * @return The newly created {@code extensible match} filter.
     */
    public static Filter newExtensibleMatchFilter(final String matchingRule,
            final String attributeDescription, final Object assertionValue,
            final boolean dnAttributes) {
    public static Filter extensible(final String matchingRule, final String attributeDescription,
            final Object assertionValue, final boolean dnAttributes) {
        Validator.ensureTrue((matchingRule != null) || (attributeDescription != null),
                "matchingRule and/or " + "attributeDescription must not be null");
        Validator.ensureNotNull(assertionValue);
@@ -646,7 +633,7 @@
     *            The assertion value.
     * @return The newly created {@code greater or equal} filter.
     */
    public static Filter newGreaterOrEqualFilter(final String attributeDescription,
    public static Filter greaterOrEqual(final String attributeDescription,
            final ByteString assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new GreaterOrEqualImpl(attributeDescription, assertionValue));
@@ -665,7 +652,7 @@
     *            The assertion value.
     * @return The newly created {@code greater or equal} filter.
     */
    public static Filter newGreaterOrEqualFilter(final String attributeDescription,
    public static Filter greaterOrEqual(final String attributeDescription,
            final Object assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new GreaterOrEqualImpl(attributeDescription, ByteString
@@ -682,7 +669,7 @@
     *            The assertion value.
     * @return The newly created {@code less or equal} filter.
     */
    public static Filter newLessOrEqualFilter(final String attributeDescription,
    public static Filter lessOrEqual(final String attributeDescription,
            final ByteString assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new LessOrEqualImpl(attributeDescription, assertionValue));
@@ -701,8 +688,7 @@
     *            The assertion value.
     * @return The newly created {@code less or equal} filter.
     */
    public static Filter newLessOrEqualFilter(final String attributeDescription,
            final Object assertionValue) {
    public static Filter lessOrEqual(final String attributeDescription, final Object assertionValue) {
        Validator.ensureNotNull(attributeDescription, assertionValue);
        return new Filter(new LessOrEqualImpl(attributeDescription, ByteString
                .valueOf(assertionValue)));
@@ -715,25 +701,41 @@
     *            The sub-filter.
     * @return The newly created {@code not} filter.
     */
    public static Filter newNotFilter(final Filter subFilter) {
    public static Filter not(final Filter subFilter) {
        Validator.ensureNotNull(subFilter);
        return new Filter(new NotImpl(subFilter));
    }
    /**
     * Returns the {@code objectClass} presence filter {@code (objectClass=*)}.
     * <p>
     * A call to this method is equivalent to but more efficient than the
     * following code:
     *
     * <pre>
     * Filter.present(&quot;objectClass&quot;);
     * </pre>
     *
     * @return The {@code objectClass} presence filter {@code (objectClass=*)}.
     */
    public static Filter objectClassPresent() {
        return OBJECT_CLASS_PRESENT;
    }
    /**
     * Creates a new {@code or} filter using the provided list of sub-filters.
     * <p>
     * Creating a new {@code or} filter with a {@code null} or empty list of
     * sub-filters is equivalent to calling {@link #getAbsoluteFalseFilter()}.
     * sub-filters is equivalent to calling {@link #alwaysFalse()}.
     *
     * @param subFilters
     *            The list of sub-filters, may be empty or {@code null}.
     * @return The newly created {@code or} filter.
     */
    public static Filter newOrFilter(final Collection<Filter> subFilters) {
    public static Filter or(final Collection<Filter> subFilters) {
        if (subFilters == null || subFilters.isEmpty()) {
            // RFC 4526 - FALSE filter.
            return getAbsoluteFalseFilter();
            return alwaysFalse();
        } else if (subFilters.size() == 1) {
            final Filter subFilter = subFilters.iterator().next();
            Validator.ensureNotNull(subFilter);
@@ -752,16 +754,16 @@
     * Creates a new {@code or} filter using the provided list of sub-filters.
     * <p>
     * Creating a new {@code or} filter with a {@code null} or empty list of
     * sub-filters is equivalent to calling {@link #getAbsoluteFalseFilter()}.
     * sub-filters is equivalent to calling {@link #alwaysFalse()}.
     *
     * @param subFilters
     *            The list of sub-filters, may be empty or {@code null}.
     * @return The newly created {@code or} filter.
     */
    public static Filter newOrFilter(final Filter... subFilters) {
    public static Filter or(final Filter... subFilters) {
        if ((subFilters == null) || (subFilters.length == 0)) {
            // RFC 4526 - FALSE filter.
            return getAbsoluteFalseFilter();
            return alwaysFalse();
        } else if (subFilters.length == 1) {
            Validator.ensureNotNull(subFilters[0]);
            return new Filter(new OrImpl(Collections.singletonList(subFilters[0])));
@@ -783,7 +785,7 @@
     *            The attribute description.
     * @return The newly created {@code present} filter.
     */
    public static Filter newPresentFilter(final String attributeDescription) {
    public static Filter present(final String attributeDescription) {
        Validator.ensureNotNull(attributeDescription);
        if (toLowerCase(attributeDescription).equals("objectclass")) {
            return OBJECT_CLASS_PRESENT;
@@ -810,7 +812,7 @@
     *            are specified.
     * @return The newly created {@code substrings} filter.
     */
    public static Filter newSubstringsFilter(final String attributeDescription,
    public static Filter substrings(final String attributeDescription,
            final ByteString initialSubstring, final Collection<ByteString> anySubstrings,
            final ByteString finalSubstring) {
        Validator.ensureNotNull(attributeDescription);
@@ -861,7 +863,7 @@
     *            are specified.
     * @return The newly created {@code substrings} filter.
     */
    public static Filter newSubstringsFilter(final String attributeDescription,
    public static Filter substrings(final String attributeDescription,
            final Object initialSubstring, final Collection<?> anySubstrings,
            final Object finalSubstring) {
        Validator.ensureNotNull(attributeDescription);
@@ -903,7 +905,7 @@
     *            The filter content.
     * @return The newly created {@code unrecognized} filter.
     */
    public static Filter newUnrecognizedFilter(final byte filterTag, final ByteString filterBytes) {
    public static Filter unrecognized(final byte filterTag, final ByteString filterBytes) {
        Validator.ensureNotNull(filterBytes);
        return new Filter(new UnrecognizedImpl(filterTag, filterBytes));
    }
@@ -1186,14 +1188,14 @@
        if (c == '&') {
            final List<Filter> subFilters = valueOfFilterList(string, index + 1, endIndex);
            if (subFilters.isEmpty()) {
                return getAbsoluteTrueFilter();
                return alwaysTrue();
            } else {
                return new Filter(new AndImpl(subFilters));
            }
        } else if (c == '|') {
            final List<Filter> subFilters = valueOfFilterList(string, index + 1, endIndex);
            if (subFilters.isEmpty()) {
                return getAbsoluteFalseFilter();
                return alwaysFalse();
            } else {
                return new Filter(new OrImpl(subFilters));
            }
@@ -1528,7 +1530,7 @@
            return new Filter(new EqualityMatchImpl(attributeDescription, ByteString.empty()));
        } else if ((endIndex - startIndex == 1) && (string.charAt(startIndex) == '*')) {
            // Single asterisk is a present filter.
            return newPresentFilter(attributeDescription);
            return present(attributeDescription);
        } else if (asteriskIdx > 0 && asteriskIdx <= endIndex) {
            // Substring filter.
            return assertionValue2SubstringFilter(string, attributeDescription, startIndex,
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java
@@ -169,7 +169,7 @@
    /**
     * The default filter.
     */
    private static final Filter DEFAULT_FILTER = Filter.getObjectClassPresentFilter();
    private static final Filter DEFAULT_FILTER = Filter.objectClassPresent();
    /**
     * The default search scope.
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/RootDSE.java
@@ -116,7 +116,7 @@
            .create(CoreSchema.getVendorNameAttributeType());
    private static final SearchRequest SEARCH_REQUEST = Requests.newSearchRequest(DN.rootDN(),
            SearchScope.BASE_OBJECT, Filter.getObjectClassPresentFilter(), ATTR_ALT_SERVER
            SearchScope.BASE_OBJECT, Filter.objectClassPresent(), ATTR_ALT_SERVER
                    .toString(), ATTR_NAMING_CONTEXTS.toString(),
            ATTR_SUPPORTED_CONTROL.toString(), ATTR_SUPPORTED_EXTENSION.toString(),
            ATTR_SUPPORTED_FEATURE.toString(), ATTR_SUPPORTED_LDAP_VERSION.toString(),
opendj3/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/controls/AccountUsabilityRequestControlTestCase.java
@@ -54,7 +54,7 @@
        // a valid response.
        final SearchRequest req =
                Requests.newSearchRequest(DN.valueOf("uid=user.1,ou=people,o=test"),
                        SearchScope.BASE_OBJECT, Filter.getObjectClassPresentFilter());
                        SearchScope.BASE_OBJECT, Filter.objectClassPresent());
        final AccountUsabilityRequestControl control =
                AccountUsabilityRequestControl.newControl(false);
        req.addControl(control);
opendj3/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/controls/AccountUsabilityResponseControlTestCase.java
@@ -56,7 +56,7 @@
        // shouldn't be response.
        final SearchRequest req =
                Requests.newSearchRequest(DN.valueOf("uid=user.1,ou=people,o=test"),
                        SearchScope.BASE_OBJECT, Filter.getObjectClassPresentFilter());
                        SearchScope.BASE_OBJECT, Filter.objectClassPresent());
        final Connection con = TestCaseUtils.getInternalConnection();
        final List<SearchResultEntry> entries = new ArrayList<SearchResultEntry>();
        con.search(req, entries);
@@ -73,7 +73,7 @@
        // a valid response.
        final SearchRequest req =
                Requests.newSearchRequest(DN.valueOf("uid=user.1,ou=people,o=test"),
                        SearchScope.BASE_OBJECT, Filter.getObjectClassPresentFilter());
                        SearchScope.BASE_OBJECT, Filter.objectClassPresent());
        final AccountUsabilityRequestControl control =
                AccountUsabilityRequestControl.newControl(false);
        req.addControl(control);
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/FilterTestCase.java
@@ -53,16 +53,16 @@
    @DataProvider(name = "filterstrings")
    public Object[][] getFilterStrings() throws Exception {
        final Filter equal =
                Filter.newEqualityMatchFilter("objectClass", ByteString.valueOf("\\test*(Value)"));
        final Filter equal2 = Filter.newEqualityMatchFilter("objectClass", ByteString.valueOf(""));
                Filter.equality("objectClass", ByteString.valueOf("\\test*(Value)"));
        final Filter equal2 = Filter.equality("objectClass", ByteString.valueOf(""));
        final Filter approx =
                Filter.newApproxMatchFilter("sn", ByteString.valueOf("\\test*(Value)"));
                Filter.approx("sn", ByteString.valueOf("\\test*(Value)"));
        final Filter greater =
                Filter.newGreaterOrEqualFilter("employeeNumber", ByteString
                Filter.greaterOrEqual("employeeNumber", ByteString
                        .valueOf("\\test*(Value)"));
        final Filter less =
                Filter.newLessOrEqualFilter("dob", ByteString.valueOf("\\test*(Value)"));
        final Filter presense = Filter.newPresentFilter("login");
                Filter.lessOrEqual("dob", ByteString.valueOf("\\test*(Value)"));
        final Filter presense = Filter.present("login");
        final ArrayList<ByteString> any = new ArrayList<ByteString>(0);
        final ArrayList<ByteString> multiAny = new ArrayList<ByteString>(1);
@@ -70,41 +70,41 @@
        multiAny.add(ByteString.valueOf("*"));
        final Filter substring1 =
                Filter.newSubstringsFilter("givenName", ByteString.valueOf("\\Jo*()"), any,
                Filter.substrings("givenName", ByteString.valueOf("\\Jo*()"), any,
                        ByteString.valueOf("\\n*()"));
        final Filter substring2 =
                Filter.newSubstringsFilter("givenName", ByteString.valueOf("\\Jo*()"), multiAny,
                Filter.substrings("givenName", ByteString.valueOf("\\Jo*()"), multiAny,
                        ByteString.valueOf("\\n*()"));
        final Filter substring3 =
                Filter.newSubstringsFilter("givenName", ByteString.valueOf(""), any, ByteString
                Filter.substrings("givenName", ByteString.valueOf(""), any, ByteString
                        .valueOf("\\n*()"));
        final Filter substring4 =
                Filter.newSubstringsFilter("givenName", ByteString.valueOf("\\Jo*()"), any,
                Filter.substrings("givenName", ByteString.valueOf("\\Jo*()"), any,
                        ByteString.valueOf(""));
        final Filter substring5 =
                Filter.newSubstringsFilter("givenName", ByteString.valueOf(""), multiAny,
                Filter.substrings("givenName", ByteString.valueOf(""), multiAny,
                        ByteString.valueOf(""));
        final Filter extensible1 =
                Filter.newExtensibleMatchFilter("2.4.6.8.19", "cn", ByteString
                Filter.extensible("2.4.6.8.19", "cn", ByteString
                        .valueOf("\\John* (Doe)"), false);
        final Filter extensible2 =
                Filter.newExtensibleMatchFilter("2.4.6.8.19", "cn", ByteString
                Filter.extensible("2.4.6.8.19", "cn", ByteString
                        .valueOf("\\John* (Doe)"), true);
        final Filter extensible3 =
                Filter.newExtensibleMatchFilter("2.4.6.8.19", null, ByteString
                Filter.extensible("2.4.6.8.19", null, ByteString
                        .valueOf("\\John* (Doe)"), true);
        final Filter extensible4 =
                Filter.newExtensibleMatchFilter(null, "cn", ByteString.valueOf("\\John* (Doe)"),
                Filter.extensible(null, "cn", ByteString.valueOf("\\John* (Doe)"),
                        true);
        final Filter extensible5 =
                Filter.newExtensibleMatchFilter("2.4.6.8.19", null, ByteString
                Filter.extensible("2.4.6.8.19", null, ByteString
                        .valueOf("\\John* (Doe)"), false);
        final ArrayList<Filter> list1 = new ArrayList<Filter>();
        list1.add(equal);
        list1.add(approx);
        final Filter and = Filter.newAndFilter(list1);
        final Filter and = Filter.and(list1);
        final ArrayList<Filter> list2 = new ArrayList<Filter>();
        list2.add(substring1);
@@ -146,17 +146,17 @@
            { "(:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)", extensible5 },
            { "(&(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29))",
                Filter.newAndFilter(list1) },
                Filter.and(list1) },
            { "(|(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29))",
                Filter.newOrFilter(list1) },
                Filter.or(list1) },
            { "(!(objectClass=\\5Ctest\\2A\\28Value\\29))", Filter.newNotFilter(equal) },
            { "(!(objectClass=\\5Ctest\\2A\\28Value\\29))", Filter.not(equal) },
            {
                "(|(givenName=\\5CJo\\2A\\28\\29*\\5Cn\\2A\\28\\29)(cn:2.4.6.8.19:=\\5CJohn\\2A \\28Doe\\29)"
                        + "(&(objectClass=\\5Ctest\\2A\\28Value\\29)(sn~=\\5Ctest\\2A\\28Value\\29)))",
                Filter.newOrFilter(list2) }
                Filter.or(list2) }
        };
    }
@@ -207,7 +207,7 @@
    @Test
    public void testMatcher() throws Exception {
        final Filter equal =
                Filter.newEqualityMatchFilter("cn", ByteString.valueOf("\\test*(Value)"));
                Filter.equality("cn", ByteString.valueOf("\\test*(Value)"));
        final LinkedHashMapEntry entry =
                new LinkedHashMapEntry(DN.valueOf("cn=\\test*(Value),dc=org"));
        entry.addAttribute("cn", "\\test*(Value)");
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPUrlTestCase.java
@@ -89,18 +89,18 @@
                "ldaps://void.central:123/???" },
            { new LDAPUrl(true, null, null, null, null, null, "cn", "sn"), "ldaps:///?cn,sn??" },
            {
                new LDAPUrl(true, null, null, null, null, Filter.newEqualityMatchFilter("uid",
                new LDAPUrl(true, null, null, null, null, Filter.equality("uid",
                        "abc"), "cn"), "ldaps:///?cn??(uid=abc)" },
            {
                new LDAPUrl(true, null, null, null, SearchScope.WHOLE_SUBTREE, Filter
                        .newEqualityMatchFilter("uid", "abc"), "cn"), "ldaps:///?cn?sub?(uid=abc)" },
                        .equality("uid", "abc"), "cn"), "ldaps:///?cn?sub?(uid=abc)" },
            {
                new LDAPUrl(true, null, null, DN.valueOf("uid=abc,o=target"),
                        SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"),
                        SearchScope.WHOLE_SUBTREE, Filter.equality("uid", "abc"),
                        "cn"), "ldaps:///uid=abc,o=target?cn?sub?(uid=abc)" },
            {
                new LDAPUrl(true, "localhost", 1345, DN.valueOf("uid=abc,o=target"),
                        SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"),
                        SearchScope.WHOLE_SUBTREE, Filter.equality("uid", "abc"),
                        "cn"), "ldaps://localhost:1345/uid=abc,o=target?cn?sub?(uid=abc)" }, };
    }
@@ -122,19 +122,19 @@
            { new LDAPUrl(true, null, null, null, null, null, "cn", "sn"),
                LDAPUrl.valueOf("ldaps:///?cn,sn??") },
            {
                new LDAPUrl(true, null, null, null, null, Filter.newEqualityMatchFilter("uid",
                new LDAPUrl(true, null, null, null, null, Filter.equality("uid",
                        "abc"), "cn"), LDAPUrl.valueOf("ldaps:///?cn??(uid=abc)") },
            {
                new LDAPUrl(true, null, null, null, SearchScope.WHOLE_SUBTREE, Filter
                        .newEqualityMatchFilter("uid", "abc"), "cn"),
                        .equality("uid", "abc"), "cn"),
                LDAPUrl.valueOf("ldaps:///?cn?sub?(uid=abc)") },
            {
                new LDAPUrl(true, null, null, DN.valueOf("uid=abc,o=target"),
                        SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"),
                        SearchScope.WHOLE_SUBTREE, Filter.equality("uid", "abc"),
                        "cn"), LDAPUrl.valueOf("ldaps:///uid=abc,o=target?cn?sub?(uid=abc)") },
            {
                new LDAPUrl(true, "localhost", 1345, DN.valueOf("uid=abc,o=target"),
                        SearchScope.WHOLE_SUBTREE, Filter.newEqualityMatchFilter("uid", "abc"),
                        SearchScope.WHOLE_SUBTREE, Filter.equality("uid", "abc"),
                        "cn"),
                LDAPUrl.valueOf("ldaps://localhost:1345/uid=abc,o=target?cn?sub?(uid=abc)") }, };
    }