Существует ли отдельная библиотека Java, которая обеспечивает синтаксический анализ стиля LDAP? - PullRequest
3 голосов
/ 22 июня 2009

Я ищу автономную библиотеку Java, которая позволяет мне анализировать выражения фильтра стилей LDAP. Есть ли такая вещь доступной или лучше вместо нее использовать ANTLR и создать ее самостоятельно?

В качестве фона: сам фильтр отправляется через сеть, и я хочу создать, скажем, соответствующие критерии гибернации. Я ничего не делаю с LDAP!

Любые другие идеи относительно независимого от технологии решения для передачи и преобразования пользовательских запросов также приветствуются.

Ответы [ 7 ]

2 голосов
/ 27 августа 2009

Вы можете использовать общую библиотеку LDAP сервера каталогов apache.

Доступен в Maven на

<dependency>
  <groupId>org.apache.directory.shared</groupId>
  <artifactId>shared-ldap</artifactId>
  <version>0.9.15</version>
</dependency>

И вы можете использовать его как:

final ExprNode filter = FilterParser.parse(filterString);
1 голос
/ 25 апреля 2012

OpenDS имеет статический метод в классе с именем LDAPFilter, который называется просто, decode , который принимает строковый аргумент, например:

LDAPFilter parsed = LDAPFilter.decode(filter);

Javadoc здесь .

Он очень похож на FilterParser Apache DS, хотя работа с результатом немного отличается, поскольку нет реальной существенной иерархии наследования. Одно из преимуществ, которое я обнаружил, заключалось в том, что он не переписывал расширяемый синтаксис правил сопоставления, поэтому, если вы рассматриваете это как способ проверки и нормализации фильтров, это следует учитывать.

Предостережение заключается в том, что оба синтаксических анализатора ожидают, что пробелы будут предварительно отфильтрованы, поэтому убедитесь, что вы предварительно запустили что-то подобное для любой входной строки:

filter.replaceAll("\\s?([\\(\\|&!=:\\)])\\s?", "$1");

Надеюсь, это поможет.

1 голос
/ 12 июля 2009

Вы также можете посмотреть на использование сервера каталогов Apache либо для использования некоторых его классов, таких как предложение lavinio для OpenLDAP, либо для встраивания его как части вашего приложения.

0 голосов
/ 30 декабря 2009

Большинство контейнеров OSGi также содержат эту функциональность, поскольку фильтры такого типа являются частью спецификации OSGi .

0 голосов
/ 20 июля 2009

, чтобы уточнить, настроены ли они на запросы типа LDAP, если вы не пытаетесь запросить ldap.

Вы смотрели на что-то подобное?

http://josql.sourceforge.net/

0 голосов
/ 24 июня 2009

Вы рассматривали jldap как часть OpenLDAP?

Источник доступен , и существуют классы для анализа как URL-адресов LDAP, так и поисковых выражений . Это больше, чем нужно, но вы можете использовать только объекты, не выполняя их на сервере LDAP, если вы этого хотите.

0 голосов
/ 22 июня 2009

Единственная библиотека синтаксического анализа LDAP, о которой я знаю, - это .NET, System.DirectoryServices. * Теоретически вы должны иметь возможность использовать эту библиотеку в Mono для получения технологической независимости (кроме моно или самого .net).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...