LDAP 스타일 파싱을 제공하는 독립형 Java 라이브러리가 있습니까?
문제
LDAP 스타일 필터 표현식을 구문 분석 할 수있는 독립형 Java 라이브러리를 찾고 있습니다. 그렇지 않으면 Antlr을 대신 사용하여 하나의 자체적으로 구축하는 것이 좋습니다.
배경 : 필터 자체는 네트워크를 통해 제출되며 적절한 최대 절전 모드 기준 인 Say를 만들고 싶습니다. 나는 LDAP로 아무것도하지 않는다!
사용자 정의 쿼리를 전송 및 변환하기위한 기술 독립적 인 솔루션에 대한 다른 아이디어도 감사합니다.
해결책
Apache Directory Server의 공유 LDAP 라이브러리를 사용할 수 있습니다.
Maven AT에서 사용할 수 있습니다
<dependency>
<groupId>org.apache.directory.shared</groupId>
<artifactId>shared-ldap</artifactId>
<version>0.9.15</version>
</dependency>
그리고 당신은 다음과 같이 사용할 수 있습니다.
final ExprNode filter = FilterParser.parse(filterString);
다른 팁
당신은 또한 사용을 볼 수 있습니다 Apache Directory 서버 OpenLDap에 대한 Lavinio의 제안과 같은 일부 클래스를 사용하거나 응용 프로그램의 일부로 포함합니다.
opends ldapfilter라는 클래스에 정적 메소드가 있습니다. 풀다, 이것은 문자열 인수를 가져옵니다.
LDAPFilter parsed = LDAPFilter.decode(filter);
Javadoc입니다 여기.
Apache DS의 필터 파서와 매우 유사하지만 실질적인 상속 계층이 없기 때문에 결과로 작업하는 것은 약간 다릅니다. 내가 찾은 한 가지 장점은 확장 가능한 매칭 규칙 구문을 다시 작성하지 않았다는 것입니다. 따라서 필터를 유효성을 검증하고 정상화하는 방법으로 이것을 염두에 두는 방법으로 생각하는 경우.
경고는 두 파서 모두 미래의 공백을 필터링 할 것으로 예상되므로 미리 입력 문자열에서 이와 같은 것을 실행해야한다는 것입니다.
filter.replaceAll("\\s?([\\(\\|&!=:\\)])\\s?", "$1");
도움이 되었기를 바랍니다.
내가 아는 유일한 LDAP 구문 분석 라이브러리는 .NET Ones System.DirectoryServices입니다.* 이론적으로 Mono 에서이 라이브러리를 사용하여 기술 독립성을 얻을 수 있어야합니다 (Mono 또는 .NET 자체를 제외한).
OpenLDAP의 일부로 JLDAP를 보셨습니까?
그만큼 출처를 사용할 수 있습니다, 그리고 LDAP URL을 구문 분석하기위한 클래스가 있습니다. 검색 표현. 필요한 것보다 더 많지만 LDAP 서버에 대해 실제로 실행하지 않고 객체 만 사용할 수 있습니다.
대부분의 OSGI 컨테이너에는이 기능도 포함되어 있습니다 이러한 종류의 필터는 OSGI 사양의 일부입니다..