OpenDS имеет статический метод в классе с именем LDAPFilter, который называется просто, decode , который принимает строковый аргумент, например:
LDAPFilter parsed = LDAPFilter.decode(filter);
Javadoc здесь .
Он очень похож на FilterParser Apache DS, хотя работа с результатом немного отличается, поскольку нет реальной существенной иерархии наследования. Одно из преимуществ, которое я обнаружил, заключалось в том, что он не переписывал расширяемый синтаксис правил сопоставления, поэтому, если вы рассматриваете это как способ проверки и нормализации фильтров, это следует учитывать.
Предостережение заключается в том, что оба синтаксических анализатора ожидают, что пробелы будут предварительно отфильтрованы, поэтому убедитесь, что вы предварительно запустили что-то подобное для любой входной строки:
filter.replaceAll("\\s?([\\(\\|&!=:\\)])\\s?", "$1");
Надеюсь, это поможет.