com.unboundid.ldap.sdk
Class Filter

java.lang.Object
  extended by com.unboundid.ldap.sdk.Filter
All Implemented Interfaces:
java.io.Serializable

public final class Filter
extends java.lang.Object
implements java.io.Serializable

This class provides a data structure that represents an LDAP search filter. It provides methods for creating various types of filters, as well as parsing a filter from a string. See RFC 4515 for more information about representing search filters as strings.

The following filter types are defined:



There are two primary ways to create a search filter. The first is to create a filter from its string representation with the Filter#create(String) method, using the syntax described in RFC 4515. For example:
   Filter f1 = Filter.create("(objectClass=*)");
   Filter f2 = Filter.create("(uid=john.doe)");
   Filter f3 = Filter.create("(|(givenName=John)(givenName=Johnathan))");
 


Creating a filter from its string representation is a common approach and seems to be relatively straightforward, but it does have some hidden dangers. This primarily comes from the potential for special characters in the filter string which need to be properly escaped. If this isn't done, then the search may fail or behave unexpectedly, or worse it could lead to a vulnerability in the application in which a malicious user could trick the application into retrieving more information than it should have. To avoid these problems, it may be better to construct filters from their individual components rather than their string representations, like:
   Filter f1 = Filter.createPresenceFilter("objectClass");
   Filter f2 = Filter.createEqualityFilter("uid", "john.doe");
   Filter f3 = Filter.createORFilter(
                    Filter.createEqualityFilter("givenName", "John"),
                    Filter.createEqualityFilter("givenName", "Johnathan"));
 
In general, it is recommended to avoid creating filters from their string representations if any of that string representation may include user-provided data or special characters including non-ASCII characters, parentheses, asterisks, or backslashes.

See Also:
Serialized Form

Field Summary
static byte FILTER_TYPE_AND
          The BER type for AND search filters.
static byte FILTER_TYPE_APPROXIMATE_MATCH
          The BER type for approximate match search filters.
static byte FILTER_TYPE_EQUALITY
          The BER type for equality search filters.
static byte FILTER_TYPE_EXTENSIBLE_MATCH
          The BER type for extensible match search filters.
static byte FILTER_TYPE_GREATER_OR_EQUAL
          The BER type for greaterOrEqual search filters.
static byte FILTER_TYPE_LESS_OR_EQUAL
          The BER type for lessOrEqual search filters.
static byte FILTER_TYPE_NOT
          The BER type for NOT search filters.
static byte FILTER_TYPE_OR
          The BER type for OR search filters.
static byte FILTER_TYPE_PRESENCE
          The BER type for presence search filters.
static byte FILTER_TYPE_SUBSTRING
          The BER type for substring search filters.
 
Method Summary
static Filter create(java.lang.String filterString)
          Creates a new search filter from the provided string representation.
static Filter createANDFilter(java.util.Collection<Filter> andComponents)
          Creates a new AND search filter with the provided components.
static Filter createANDFilter(Filter... andComponents)
          Creates a new AND search filter with the provided components.
static Filter createANDFilter(java.util.List<Filter> andComponents)
          Creates a new AND search filter with the provided components.
static Filter createApproximateMatchFilter(java.lang.String attributeName, byte[] assertionValue)
          Creates a new approximate match search filter with the provided information.
static Filter createApproximateMatchFilter(java.lang.String attributeName, java.lang.String assertionValue)
          Creates a new approximate match search filter with the provided information.
static Filter createEqualityFilter(java.lang.String attributeName, byte[] assertionValue)
          Creates a new equality search filter with the provided information.
static Filter createEqualityFilter(java.lang.String attributeName, java.lang.String assertionValue)
          Creates a new equality search filter with the provided information.
static Filter createExtensibleMatchFilter(java.lang.String attributeName, java.lang.String matchingRuleID, boolean dnAttributes, byte[] assertionValue)
          Creates a new extensible match search filter with the provided information.
static Filter createExtensibleMatchFilter(java.lang.String attributeName, java.lang.String matchingRuleID, boolean dnAttributes, java.lang.String assertionValue)
          Creates a new extensible match search filter with the provided information.
static Filter createGreaterOrEqualFilter(java.lang.String attributeName, byte[] assertionValue)
          Creates a new greater-or-equal search filter with the provided information.
static Filter createGreaterOrEqualFilter(java.lang.String attributeName, java.lang.String assertionValue)
          Creates a new greater-or-equal search filter with the provided information.
static Filter createLessOrEqualFilter(java.lang.String attributeName, byte[] assertionValue)
          Creates a new less-or-equal search filter with the provided information.
static Filter createLessOrEqualFilter(java.lang.String attributeName, java.lang.String assertionValue)
          Creates a new less-or-equal search filter with the provided information.
static Filter createNOTFilter(Filter notComponent)
          Creates a new NOT search filter with the provided component.
static Filter createORFilter(java.util.Collection<Filter> orComponents)
          Creates a new OR search filter with the provided components.
static Filter createORFilter(Filter... orComponents)
          Creates a new OR search filter with the provided components.
static Filter createORFilter(java.util.List<Filter> orComponents)
          Creates a new OR search filter with the provided components.
static Filter createPresenceFilter(java.lang.String attributeName)
          Creates a new presence search filter with the provided information.
static Filter createSubstringFilter(java.lang.String attributeName, byte[] subInitial, byte[][] subAny, byte[] subFinal)
          Creates a new substring search filter with the provided information.
static Filter createSubstringFilter(java.lang.String attributeName, java.lang.String subInitial, java.lang.String[] subAny, java.lang.String subFinal)
          Creates a new substring search filter with the provided information.
static Filter decode(ASN1Element filterElement)
          Decodes the provided ASN.1 element as a search filter.
 ASN1Element encode()
          Encodes this search filter to an ASN.1 element suitable for inclusion in an LDAP search request protocol op.
static java.lang.String encodeValue(byte[] value)
          Encodes the provided value into a form suitable for use as the assertion value in the string representation of a search filter.
static java.lang.String encodeValue(java.lang.String value)
          Encodes the provided value into a form suitable for use as the assertion value in the string representation of a search filter.
 boolean equals(java.lang.Object o)
          Indicates whether the provided object is equal to this search filter.
 java.lang.String getAssertionValue()
          Retrieves the string representation of the assertion value for this search filter.
 byte[] getAssertionValueBytes()
          Retrieves the binary representation of the assertion value for this search filter.
 java.lang.String getAttributeName()
          Retrieves the name of the attribute type for this search filter.
 Filter[] getComponents()
          Retrieves the set of filter components used in this AND or OR filter.
 boolean getDNAttributes()
          Retrieves the dnAttributes flag for this extensible match filter.
 byte getFilterType()
          Retrieves the filter type for this filter.
 java.lang.String getMatchingRuleID()
          Retrieves the matching rule ID for this extensible match filter.
 Filter getNOTComponent()
          Retrieves the filter component used in this NOT filter.
 ASN1OctetString getRawAssertionValue()
          Retrieves the raw assertion value for this search filter as an ASN.1 octet string.
 ASN1OctetString[] getRawSubAnyValues()
          Retrieves the raw subAny values for this substring filter.
 ASN1OctetString getRawSubFinalValue()
          Retrieves the raw subFinal element for this filter as an ASN.1 octet string.
 ASN1OctetString getRawSubInitialValue()
          Retrieves the raw subInitial element for this filter as an ASN.1 octet string.
 byte[][] getSubAnyBytes()
          Retrieves the binary representations of the subAny elements for this substring filter.
 java.lang.String[] getSubAnyStrings()
          Retrieves the string representations of the subAny elements for this substring filter.
 byte[] getSubFinalBytes()
          Retrieves the binary representation of the subFinal element for this substring filter.
 java.lang.String getSubFinalString()
          Retrieves the string representation of the subFinal element for this substring filter.
 byte[] getSubInitialBytes()
          Retrieves the binary representation of the subInitial element for this substring filter.
 java.lang.String getSubInitialString()
          Retrieves the string representation of the subInitial element for this substring filter.
 int hashCode()
          Generates a hash code for this search filter.
 boolean matchesEntry(Entry entry)
          Indicates whether this filter matches the provided entry.
 boolean matchesEntry(Entry entry, Schema schema)
          Indicates whether this filter matches the provided entry.
static Filter readFrom(ASN1StreamReader reader)
          Reads and decodes a search filter from the provided ASN.1 stream reader.
static Filter simplifyFilter(Filter filter, boolean reOrderElements)
          Attempts to simplify the provided filter to allow it to be more efficiently processed by the server.
 void toCode(java.util.List<java.lang.String> lineList, int indentSpaces, java.lang.String firstLinePrefix, java.lang.String lastLineSuffix)
          Appends a number of lines comprising the Java source code that can be used to recreate this filter to the given list.
 java.lang.String toNormalizedString()
          Retrieves a normalized string representation of this search filter.
 void toNormalizedString(java.lang.StringBuilder buffer)
          Appends a normalized string representation of this search filter to the provided buffer.
 java.lang.String toString()
          Retrieves a string representation of this search filter.
 void toString(java.lang.StringBuilder buffer)
          Appends a string representation of this search filter to the provided buffer.
 void writeTo(ASN1Buffer buffer)
          Writes an ASN.1-encoded representation of this filter to the provided ASN.1 buffer.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

FILTER_TYPE_AND

public static final byte FILTER_TYPE_AND
The BER type for AND search filters.

See Also:
Constant Field Values

FILTER_TYPE_OR

public static final byte FILTER_TYPE_OR
The BER type for OR search filters.

See Also:
Constant Field Values

FILTER_TYPE_NOT

public static final byte FILTER_TYPE_NOT
The BER type for NOT search filters.

See Also:
Constant Field Values

FILTER_TYPE_EQUALITY

public static final byte FILTER_TYPE_EQUALITY
The BER type for equality search filters.

See Also:
Constant Field Values

FILTER_TYPE_SUBSTRING

public static final byte FILTER_TYPE_SUBSTRING
The BER type for substring search filters.

See Also:
Constant Field Values

FILTER_TYPE_GREATER_OR_EQUAL

public static final byte FILTER_TYPE_GREATER_OR_EQUAL
The BER type for greaterOrEqual search filters.

See Also:
Constant Field Values

FILTER_TYPE_LESS_OR_EQUAL

public static final byte FILTER_TYPE_LESS_OR_EQUAL
The BER type for lessOrEqual search filters.

See Also:
Constant Field Values

FILTER_TYPE_PRESENCE

public static final byte FILTER_TYPE_PRESENCE
The BER type for presence search filters.

See Also:
Constant Field Values

FILTER_TYPE_APPROXIMATE_MATCH

public static final byte FILTER_TYPE_APPROXIMATE_MATCH
The BER type for approximate match search filters.

See Also:
Constant Field Values

FILTER_TYPE_EXTENSIBLE_MATCH

public static final byte FILTER_TYPE_EXTENSIBLE_MATCH
The BER type for extensible match search filters.

See Also:
Constant Field Values
Method Detail

createANDFilter

public static Filter createANDFilter(Filter... andComponents)
Creates a new AND search filter with the provided components.

Parameters:
andComponents - The set of filter components to include in the AND filter. It must not be null.
Returns:
The created AND search filter.

createANDFilter

public static Filter createANDFilter(java.util.List<Filter> andComponents)
Creates a new AND search filter with the provided components.

Parameters:
andComponents - The set of filter components to include in the AND filter. It must not be null.
Returns:
The created AND search filter.

createANDFilter

public static Filter createANDFilter(java.util.Collection<Filter> andComponents)
Creates a new AND search filter with the provided components.

Parameters:
andComponents - The set of filter components to include in the AND filter. It must not be null.
Returns:
The created AND search filter.

createORFilter

public static Filter createORFilter(Filter... orComponents)
Creates a new OR search filter with the provided components.

Parameters:
orComponents - The set of filter components to include in the OR filter. It must not be null.
Returns:
The created OR search filter.

createORFilter

public static Filter createORFilter(java.util.List<Filter> orComponents)
Creates a new OR search filter with the provided components.

Parameters:
orComponents - The set of filter components to include in the OR filter. It must not be null.
Returns:
The created OR search filter.

createORFilter

public static Filter createORFilter(java.util.Collection<Filter> orComponents)
Creates a new OR search filter with the provided components.

Parameters:
orComponents - The set of filter components to include in the OR filter. It must not be null.
Returns:
The created OR search filter.

createNOTFilter

public static Filter createNOTFilter(Filter notComponent)
Creates a new NOT search filter with the provided component.

Parameters:
notComponent - The filter component to include in this NOT filter. It must not be null.
Returns:
The created NOT search filter.

createEqualityFilter

public static Filter createEqualityFilter(java.lang.String attributeName,
                                          java.lang.String assertionValue)
Creates a new equality search filter with the provided information.

Parameters:
attributeName - The attribute name for this equality filter. It must not be null.
assertionValue - The assertion value for this equality filter. It must not be null.
Returns:
The created equality search filter.

createEqualityFilter

public static Filter createEqualityFilter(java.lang.String attributeName,
                                          byte[] assertionValue)
Creates a new equality search filter with the provided information.

Parameters:
attributeName - The attribute name for this equality filter. It must not be null.
assertionValue - The assertion value for this equality filter. It must not be null.
Returns:
The created equality search filter.

createSubstringFilter

public static Filter createSubstringFilter(java.lang.String attributeName,
                                           java.lang.String subInitial,
                                           java.lang.String[] subAny,
                                           java.lang.String subFinal)
Creates a new substring search filter with the provided information. At least one of the subInitial, subAny, and subFinal components must not be null.

Parameters:
attributeName - The attribute name for this substring filter. It must not be null.
subInitial - The subInitial component for this substring filter.
subAny - The set of subAny components for this substring filter.
subFinal - The subFinal component for this substring filter.
Returns:
The created substring search filter.

createSubstringFilter

public static Filter createSubstringFilter(java.lang.String attributeName,
                                           byte[] subInitial,
                                           byte[][] subAny,
                                           byte[] subFinal)
Creates a new substring search filter with the provided information. At least one of the subInitial, subAny, and subFinal components must not be null.

Parameters:
attributeName - The attribute name for this substring filter. It must not be null.
subInitial - The subInitial component for this substring filter.
subAny - The set of subAny components for this substring filter.
subFinal - The subFinal component for this substring filter.
Returns:
The created substring search filter.

createGreaterOrEqualFilter

public static Filter createGreaterOrEqualFilter(java.lang.String attributeName,
                                                java.lang.String assertionValue)
Creates a new greater-or-equal search filter with the provided information.

Parameters:
attributeName - The attribute name for this greater-or-equal filter. It must not be null.
assertionValue - The assertion value for this greater-or-equal filter. It must not be null.
Returns:
The created greater-or-equal search filter.

createGreaterOrEqualFilter

public static Filter createGreaterOrEqualFilter(java.lang.String attributeName,
                                                byte[] assertionValue)
Creates a new greater-or-equal search filter with the provided information.

Parameters:
attributeName - The attribute name for this greater-or-equal filter. It must not be null.
assertionValue - The assertion value for this greater-or-equal filter. It must not be null.
Returns:
The created greater-or-equal search filter.

createLessOrEqualFilter

public static Filter createLessOrEqualFilter(java.lang.String attributeName,
                                             java.lang.String assertionValue)
Creates a new less-or-equal search filter with the provided information.

Parameters:
attributeName - The attribute name for this less-or-equal filter. It must not be null.
assertionValue - The assertion value for this less-or-equal filter. It must not be null.
Returns:
The created less-or-equal search filter.

createLessOrEqualFilter

public static Filter createLessOrEqualFilter(java.lang.String attributeName,
                                             byte[] assertionValue)
Creates a new less-or-equal search filter with the provided information.

Parameters:
attributeName - The attribute name for this less-or-equal filter. It must not be null.
assertionValue - The assertion value for this less-or-equal filter. It must not be null.
Returns:
The created less-or-equal search filter.

createPresenceFilter

public static Filter createPresenceFilter(java.lang.String attributeName)
Creates a new presence search filter with the provided information.

Parameters:
attributeName - The attribute name for this presence filter. It must not be null.
Returns:
The created presence search filter.

createApproximateMatchFilter

public static Filter createApproximateMatchFilter(java.lang.String attributeName,
                                                  java.lang.String assertionValue)
Creates a new approximate match search filter with the provided information.

Parameters:
attributeName - The attribute name for this approximate match filter. It must not be null.
assertionValue - The assertion value for this approximate match filter. It must not be null.
Returns:
The created approximate match search filter.

createApproximateMatchFilter

public static Filter createApproximateMatchFilter(java.lang.String attributeName,
                                                  byte[] assertionValue)
Creates a new approximate match search filter with the provided information.

Parameters:
attributeName - The attribute name for this approximate match filter. It must not be null.
assertionValue - The assertion value for this approximate match filter. It must not be null.
Returns:
The created approximate match search filter.

createExtensibleMatchFilter

public static Filter createExtensibleMatchFilter(java.lang.String attributeName,
                                                 java.lang.String matchingRuleID,
                                                 boolean dnAttributes,
                                                 java.lang.String assertionValue)
Creates a new extensible match search filter with the provided information. At least one of the attribute name and matching rule ID must be specified, and the assertion value must always be present.

Parameters:
attributeName - The attribute name for this extensible match filter.
matchingRuleID - The matching rule ID for this extensible match filter.
dnAttributes - Indicates whether the match should be performed against attributes in the target entry's DN.
assertionValue - The assertion value for this extensible match filter. It must not be null.
Returns:
The created extensible match search filter.

createExtensibleMatchFilter

public static Filter createExtensibleMatchFilter(java.lang.String attributeName,
                                                 java.lang.String matchingRuleID,
                                                 boolean dnAttributes,
                                                 byte[] assertionValue)
Creates a new extensible match search filter with the provided information. At least one of the attribute name and matching rule ID must be specified, and the assertion value must always be present.

Parameters:
attributeName - The attribute name for this extensible match filter.
matchingRuleID - The matching rule ID for this extensible match filter.
dnAttributes - Indicates whether the match should be performed against attributes in the target entry's DN.
assertionValue - The assertion value for this extensible match filter. It must not be null.
Returns:
The created extensible match search filter.

create

public static Filter create(java.lang.String filterString)
                     throws LDAPException
Creates a new search filter from the provided string representation.

Parameters:
filterString - The string representation of the filter to create. It must not be null.
Returns:
The search filter decoded from the provided filter string.
Throws:
LDAPException - If the provided string cannot be decoded as a valid LDAP search filter.

writeTo

public void writeTo(ASN1Buffer buffer)
Writes an ASN.1-encoded representation of this filter to the provided ASN.1 buffer.

Parameters:
buffer - The ASN.1 buffer to which the encoded representation should be written.

encode

public ASN1Element encode()
Encodes this search filter to an ASN.1 element suitable for inclusion in an LDAP search request protocol op.

Returns:
An ASN.1 element containing the encoded search filter.

readFrom

public static Filter readFrom(ASN1StreamReader reader)
                       throws LDAPException
Reads and decodes a search filter from the provided ASN.1 stream reader.

Parameters:
reader - The ASN.1 stream reader from which to read the filter.
Returns:
The decoded search filter.
Throws:
LDAPException - If an error occurs while reading or parsing the search filter.

decode

public static Filter decode(ASN1Element filterElement)
                     throws LDAPException
Decodes the provided ASN.1 element as a search filter.

Parameters:
filterElement - The ASN.1 element containing the encoded search filter.
Returns:
The decoded search filter.
Throws:
LDAPException - If the provided ASN.1 element cannot be decoded as a search filter.

getFilterType

public byte getFilterType()
Retrieves the filter type for this filter.

Returns:
The filter type for this filter.

getComponents

public Filter[] getComponents()
Retrieves the set of filter components used in this AND or OR filter. This is not applicable for any other filter type.

Returns:
The set of filter components used in this AND or OR filter, or an empty array if this is some other type of filter or if there are no components (i.e., as in an LDAP TRUE or LDAP FALSE filter).

getNOTComponent

public Filter getNOTComponent()
Retrieves the filter component used in this NOT filter. This is not applicable for any other filter type.

Returns:
The filter component used in this NOT filter, or null if this is some other type of filter.

getAttributeName

public java.lang.String getAttributeName()
Retrieves the name of the attribute type for this search filter. This is applicable for the following types of filters:

Returns:
The name of the attribute type for this search filter, or null if it is not applicable for this type of filter.

getAssertionValue

public java.lang.String getAssertionValue()
Retrieves the string representation of the assertion value for this search filter. This is applicable for the following types of filters:

Returns:
The string representation of the assertion value for this search filter, or null if it is not applicable for this type of filter.

getAssertionValueBytes

public byte[] getAssertionValueBytes()
Retrieves the binary representation of the assertion value for this search filter. This is applicable for the following types of filters:

Returns:
The binary representation of the assertion value for this search filter, or null if it is not applicable for this type of filter.

getRawAssertionValue

public ASN1OctetString getRawAssertionValue()
Retrieves the raw assertion value for this search filter as an ASN.1 octet string. This is applicable for the following types of filters:

Returns:
The raw assertion value for this search filter as an ASN.1 octet string, or null if it is not applicable for this type of filter.

getSubInitialString

public java.lang.String getSubInitialString()
Retrieves the string representation of the subInitial element for this substring filter. This is not applicable for any other filter type.

Returns:
The string representation of the subInitial element for this substring filter, or null if this is some other type of filter, or if it is a substring filter with no subInitial element.

getSubInitialBytes

public byte[] getSubInitialBytes()
Retrieves the binary representation of the subInitial element for this substring filter. This is not applicable for any other filter type.

Returns:
The binary representation of the subInitial element for this substring filter, or null if this is some other type of filter, or if it is a substring filter with no subInitial element.

getRawSubInitialValue

public ASN1OctetString getRawSubInitialValue()
Retrieves the raw subInitial element for this filter as an ASN.1 octet string. This is not applicable for any other filter type.

Returns:
The raw subInitial element for this filter as an ASN.1 octet string, or null if this is not a substring filter, or if it is a substring filter with no subInitial element.

getSubAnyStrings

public java.lang.String[] getSubAnyStrings()
Retrieves the string representations of the subAny elements for this substring filter. This is not applicable for any other filter type.

Returns:
The string representations of the subAny elements for this substring filter, or an empty array if this is some other type of filter, or if it is a substring filter with no subFinal element.

getSubAnyBytes

public byte[][] getSubAnyBytes()
Retrieves the binary representations of the subAny elements for this substring filter. This is not applicable for any other filter type.

Returns:
The binary representations of the subAny elements for this substring filter, or an empty array if this is some other type of filter, or if it is a substring filter with no subFinal element.

getRawSubAnyValues

public ASN1OctetString[] getRawSubAnyValues()
Retrieves the raw subAny values for this substring filter. This is not applicable for any other filter type.

Returns:
The raw subAny values for this substring filter, or an empty array if this is some other type of filter, or if it is a substring filter with no subFinal element.

getSubFinalString

public java.lang.String getSubFinalString()
Retrieves the string representation of the subFinal element for this substring filter. This is not applicable for any other filter type.

Returns:
The string representation of the subFinal element for this substring filter, or null if this is some other type of filter, or if it is a substring filter with no subFinal element.

getSubFinalBytes

public byte[] getSubFinalBytes()
Retrieves the binary representation of the subFinal element for this substring filter. This is not applicable for any other filter type.

Returns:
The binary representation of the subFinal element for this substring filter, or null if this is some other type of filter, or if it is a substring filter with no subFinal element.

getRawSubFinalValue

public ASN1OctetString getRawSubFinalValue()
Retrieves the raw subFinal element for this filter as an ASN.1 octet string. This is not applicable for any other filter type.

Returns:
The raw subFinal element for this filter as an ASN.1 octet string, or null if this is not a substring filter, or if it is a substring filter with no subFinal element.

getMatchingRuleID

public java.lang.String getMatchingRuleID()
Retrieves the matching rule ID for this extensible match filter. This is not applicable for any other filter type.

Returns:
The matching rule ID for this extensible match filter, or null if this is some other type of filter, or if this extensible match filter does not have a matching rule ID.

getDNAttributes

public boolean getDNAttributes()
Retrieves the dnAttributes flag for this extensible match filter. This is not applicable for any other filter type.

Returns:
The dnAttributes flag for this extensible match filter.

matchesEntry

public boolean matchesEntry(Entry entry)
                     throws LDAPException
Indicates whether this filter matches the provided entry. Note that this is a best-guess effort and may not be completely accurate in all cases. All matching will be performed using case-ignore string matching, which may yield an unexpected result for values that should not be treated as simple strings. For example:
In addition to the above constraints, it should be noted that neither approximate matching nor extensible matching are currently supported.

Parameters:
entry - The entry for which to make the determination. It must not be null.
Returns:
true if this filter appears to match the provided entry, or false if not.
Throws:
LDAPException - If a problem occurs while trying to make the determination.

matchesEntry

public boolean matchesEntry(Entry entry,
                            Schema schema)
                     throws LDAPException
Indicates whether this filter matches the provided entry. Note that this is a best-guess effort and may not be completely accurate in all cases. If provided, the given schema will be used in an attempt to determine the appropriate matching rule for making the determinations, but some corner cases may not be handled accurately. Neither approximate matching nor extensible matching are currently supported.

Parameters:
entry - The entry for which to make the determination. It must not be null.
schema - The schema to use when making the determination. If this is null, then all matching will be performed using a case-ignore matching rule.
Returns:
true if this filter appears to match the provided entry, or false if not.
Throws:
LDAPException - If a problem occurs while trying to make the determination.

simplifyFilter

public static Filter simplifyFilter(Filter filter,
                                    boolean reOrderElements)
Attempts to simplify the provided filter to allow it to be more efficiently processed by the server. The simplifications it will make include:

The simplification will happen recursively, in an attempt to generate a filter that is as simple and efficient as possible.

Parameters:
filter - The filter to attempt to simplify.
reOrderElements - Indicates whether this method may re-order the elements in the filter so that, in a server that evaluates the components in a left-to-right order, the components which are likely to be more efficient to process will be listed before those which are likely to be less efficient.
Returns:
The simplified filter, or the original filter if the provided filter is not one that can be simplified any further.

hashCode

public int hashCode()
Generates a hash code for this search filter.

Overrides:
hashCode in class java.lang.Object
Returns:
The generated hash code for this search filter.

equals

public boolean equals(java.lang.Object o)
Indicates whether the provided object is equal to this search filter.

Overrides:
equals in class java.lang.Object
Parameters:
o - The object for which to make the determination.
Returns:
true if the provided object can be considered equal to this search filter, or false if not.

toString

public java.lang.String toString()
Retrieves a string representation of this search filter.

Overrides:
toString in class java.lang.Object
Returns:
A string representation of this search filter.

toString

public void toString(java.lang.StringBuilder buffer)
Appends a string representation of this search filter to the provided buffer.

Parameters:
buffer - The buffer to which to append a string representation of this search filter.

toNormalizedString

public java.lang.String toNormalizedString()
Retrieves a normalized string representation of this search filter.

Returns:
A normalized string representation of this search filter.

toNormalizedString

public void toNormalizedString(java.lang.StringBuilder buffer)
Appends a normalized string representation of this search filter to the provided buffer.

Parameters:
buffer - The buffer to which to append a normalized string representation of this search filter.

encodeValue

public static java.lang.String encodeValue(java.lang.String value)
Encodes the provided value into a form suitable for use as the assertion value in the string representation of a search filter. Parentheses, asterisks, backslashes, null characters, and any non-ASCII characters will be escaped using a backslash before the hexadecimal representation of each byte in the character to escape.

Parameters:
value - The value to be encoded. It must not be null.
Returns:
The encoded representation of the provided string.

encodeValue

public static java.lang.String encodeValue(byte[] value)
Encodes the provided value into a form suitable for use as the assertion value in the string representation of a search filter. Parentheses, asterisks, backslashes, null characters, and any non-ASCII characters will be escaped using a backslash before the hexadecimal representation of each byte in the character to escape.

Parameters:
value - The value to be encoded. It must not be null.
Returns:
The encoded representation of the provided string.

toCode

public void toCode(java.util.List<java.lang.String> lineList,
                   int indentSpaces,
                   java.lang.String firstLinePrefix,
                   java.lang.String lastLineSuffix)
Appends a number of lines comprising the Java source code that can be used to recreate this filter to the given list. Note that unless a first line prefix and/or last line suffix are provided, this will just include the code for the static method used to create the filter, starting with "Filter.createXFilter(" and ending with the closing parenthesis for that method call.

Parameters:
lineList - The list to which the source code lines should be added.
indentSpaces - The number of spaces that should be used to indent the generated code. It must not be negative.
firstLinePrefix - An optional string that should precede the static method call (e.g., it could be used for an attribute assignment, like "Filter f = "). It may be null or empty if there should be no first line prefix.
lastLineSuffix - An optional suffix that should follow the closing parenthesis of the static method call (e.g., it could be a semicolon to represent the end of a Java statement). It may be null or empty if there should be no last line suffix.