Description
Using the following search from an LDAP client, like Softera's browser or OpenLDAP's ldapsearch, search for something like the following filter:
(& (a=A) (| (b=B) (c=C) ) )
The resulting expression object after the BER parser is finished is:
(& (| (c=C) (b=B) (a=A) ) )
This is obviously not the correct expression and results in bobus results.
I thought at first it might have been the expression object serializing to a string form that had issue, but passing the same filter string through the commons.filter.FilterParserImpl produces the correct expression object and the correct serialized string.
I am attempting to debug the problem further. If I can produce a patch I will post it, but if someone has a better idea of what is going please tackle this.