2009-06-22 3 views
3

LDAP 스타일 필터 표현식을 구문 분석 할 수있는 독립형 Java 라이브러리를 찾고 있습니다. 그런 것을 사용할 수 있습니까? 아니면 ANTLR을 대신 사용하고 자체적으로 빌드하는 것이 좋습니다.LDAP 스타일 구문 분석을 제공하는 독립형 Java 라이브러리가 있습니까?

배경으로 : 필터 자체가 네트워크를 통해 제출되고 적합한 절전 기준이라고 말하고 싶습니다. LDAP로 아무 것도하지 않습니다!

사용자 정의 쿼리를 전송하고 변환하는 기술 독립 솔루션에 대한 다른 아이디어도 환영합니다.

답변

2

당신은 아파치 디렉토리 서버의 공유 LDAP 라이브러리를 사용할 수 있습니다.

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

에서 받는다는에서 사용할 수 있습니다 그리고 당신은 그것을 좋아 사용할 수 있습니다

final ExprNode filter = FilterParser.parse(filterString); 
+0

나는 그것을 시험해보기 위해 마침내왔다. 그리고 그것은 아주 멋지게 작동한다. – Mauli

0

필자가 아는 유일한 LDAP 파싱 라이브러리는 .NET의 System.DirectoryServices입니다. * 이론적으로이 라이브러리를 Mono에서 사용하여 모노 또는 .net 자체가 아닌 다른 기술 독립성을 확보 할 수 있어야합니다.

0

OpenLDAP의 일부로 jldap을 보았습니까?

source is available이고 LDAP URL과 검색 식을 모두 구문 분석하는 클래스가 있습니다. 필요한 것 이상이지만 원하는 경우 LDAP 서버에 대해 실제로 실행하지 않고 개체 만 사용할 수 있습니다.

1

Apache directory server을 사용하여 OpenLDAP에 대한 lavinio의 제안과 같은 클래스 중 일부를 사용하거나 응용 프로그램의 일부로 포함시킬 수도 있습니다.

0

분명히하기 위해 ldap을 쿼리하지 않으려는 경우 LDAP syle 쿼리를 설정하십시오.

다음과 같은 것을 보셨습니까?

http://josql.sourceforge.net/

+0

흥미 롭습니다. 그러나 내가 찾고있는 것이 아닙니다. 한 경우에는 직접 Java 객체를 직접 쿼리하지만 SQL 또는 최대 절전 쿼리를 생성하는 데 동일한 쿼리를 사용하고 있습니다. – Mauli

1

OpenDS라는 클래스라는 LDAPFilter에 정적 메소드를 가지고, 단순히과 같이 문자열 인수를 디코드는 :

LDAPFilter parsed = LDAPFilter.decode(filter); 

Javadoc가 here입니다.

아파치 DS의 FilterParser와 매우 비슷합니다. 실제로는 실질적인 실질적인 상속 계층이 없기 때문에 결과가 약간 다릅니다. 내가 찾은 한 가지 장점은 확장 가능한 일치 규칙 구문을 다시 작성하지 않았기 때문에 이것을 염두에 두어야 할 필터의 유효성을 검사하고 정규화하는 방법으로 살펴 보는 경우입니다.이 도움이

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

희망 :

주의해야 할 점은 모두 파서는 공백이 사전에 필터링 할 것으로 예상, 그래서 당신이 사전에 어떤 입력 문자열에서이 같은 것을 실행 할 것입니다.

관련 문제