是否有独立的Java库提供LDAP样式解析?

时间:2009-06-22 13:48:15

标签: java parsing filter ldap

我正在寻找一个独立的Java库,它允许我解析LDAP样式过滤器表达式这样的东西可用,或者建议使用ANTLR并由一个人自己构建它?

作为背景:过滤器本身是通过网络提交的,我想创建说明,适当的休眠标准。 我没有对LDAP做任何事情!

对于转换和转换用户定义查询的技术独立解决方案的任何其他想法也表示赞赏。

7 个答案:

答案 0 :(得分:2)

您可以使用apache目录服务器的共享LDAP库。

可以在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 :(得分:1)

您还可以使用Apache directory server来使用某些类,例如lavinio对OpenLDAP的建议,或者将其作为应用程序的一部分嵌入。

答案 2 :(得分:1)

OpenDS在名为LDAPFilter的类上有一个静态方法,简单地称为 decode ,它接受一个字符串参数,如下所示:

LDAPFilter parsed = LDAPFilter.decode(filter);

javadoc是here

它与Apache DS的FilterParser非常相似,尽管使用结果有点不同,因为没有真正的实质继承层次结构。我发现的一个优点是它没有重写可扩展的匹配规则语法,因此如果您将此视为一种验证和规范化过滤器的方法,请记住这一点。

需要注意的是,两个解析器都希望事先过滤掉空格,因此请确保事先在任何输入字符串上运行类似的内容:

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

希望这有帮助。

答案 3 :(得分:0)

我所知道的唯一的LDAP解析库是.NET的System.DirectoryServices。*理论上你应该能够在Mono中使用这个库来获得技术独立性(除了单声道或.net本身)。

答案 4 :(得分:0)

作为OpenLDAP的一部分,你有没有看过jldap?

source is available,还有用于解析LDAP URL和搜索表达式的类。它不仅仅是你需要的,但你可以只使用这些对象,而不是在LDAP服务器上实际执行它们,如果你想做的话。

答案 5 :(得分:0)

澄清一下,如果您不尝试查询ldap,是否将它们设置为LDAP syle查询。

你看过这样的事吗?

http://josql.sourceforge.net/

答案 6 :(得分:0)

大多数OSGi容器也包含此功能,因为these kinds of filters are part of the OSGi specification