Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
IdAS String Filters
Contents
Problem
While the current IFilter, IFilterAssertion (and sub-interfaces) are adequate to perform complex searches across an IdAS context, it is cumbersome to code to them. Furthermore, there is currently no way to represent a filter using a string such that it could be passed easily across a wire protocol
Proposals
ABNF
The following ABNF could be used to represent filters as strings. Note that I simply looked at the way today's IFilter is and extrapolated an ABNF.
filter = LP filteritem RP filteritem = assertion / and / or / not assertion = resource SP comparator SP value and = AMP 1*filter or = BAR 1*filter not = EXC filter comparator = resource = value = LP = %x28 ; left paren ("(") RP = %x29 ; right paren (")") SP = %x20 ; space (" ") AMP = %x26 ; ampersand ("&") BAR = %x7C ; vertical bar or pipe ("|") EXC = %x21 ; exclamation mark ("!")
Examples
Match for any entity with a telephone number of 888-555-1212 or 888-123-4567
(&(http://example.org/attrs/phonenumber a= 888-555-1212)(http://example.org/attrs/phonenumber a= 888-123-4567))