代码之家  ›  专栏  ›  技术社区  ›  Mauli

有一个独立的Java库提供LDAP风格解析吗?

  •  3
  • Mauli  · 技术社区  · 15 年前

    我正在寻找一个独立的Java库,它允许我解析LDAP风格的过滤器表达式是可用的,或者建议使用ANTLR而不是一个自己构建它?

    作为背景:过滤器本身是通过网络提交的,我想创建一个合适的休眠条件。 我没有用LDAP做任何事情!

    对于传输和转换用户定义的查询的独立于技术的解决方案,任何其他想法都是值得赞赏的。

    7 回复  |  直到 12 年前
        1
  •  2
  •   lexicalscope    15 年前

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

    在马文有售

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

    你可以像这样使用它:

    final ExprNode filter = FilterParser.parse(filterString);
    
        2
  •  1
  •   Gaël Marziou    15 年前

    你也可以看看使用 Apache directory server 或者使用它的一些类,比如Lavinio对OpenLDAP的建议,或者将其作为应用程序的一部分嵌入。

        3
  •  1
  •   ArtemStorozhuk ewleina    12 年前

    OpenDS 在名为ldapfilter的类上有一个静态方法, 译码 ,它接受一个字符串参数,如下所示:

    LDAPFilter parsed = LDAPFilter.decode(filter);
    

    JavaDoc是 here .

    它与ApacheDS的filterParser非常相似,尽管处理结果有点不同,因为没有真正的继承层次结构。我发现的一个优点是它没有重写可扩展的匹配规则语法,所以如果您将此视为验证和规范过滤器的一种方法,那么需要记住这一点。

    警告是,两个解析器都希望预先过滤掉空白,所以请确保预先在任何输入字符串上运行类似这样的操作:

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

    希望这有帮助。

        4
  •  0
  •   Jacob Adams    15 年前

    我知道的唯一LDAP解析库是.NET ONES System.DirectoryServices.*理论上,您应该能够在Mono中使用此库以获得技术独立性(而不是Mono或.NET本身)。

        5
  •  0
  •   lavinio    15 年前

    作为OpenLDAP的一部分,您看过jldap吗?

    这个 source is available ,还有用于分析LDAP URL和 搜索表达式 . 这比您需要的要多,但是如果您想这样做的话,您可能只使用对象,而不需要在LDAP服务器上实际执行它们。

        6
  •  0
  •   phatmanace    15 年前

    为了澄清,如果您不想查询LDAP,您是否将它们设置为LDAP Syle查询。

    你看过这样的东西吗?

    http://josql.sourceforge.net/

        7
  •  0
  •   pmf    15 年前

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