Pergunta

Eu estou procurando uma biblioteca Java autônomo que me permite analisar expressões de filtro de estilo LDAP é tal coisa disponível, ou é aconselhável usar ANTLR vez e construí-lo por um auto?

Como pano de fundo: o próprio filtro é enviado através de uma rede, e eu quero criar digamos, os critérios de hibernação apropriadas. Eu não estou fazendo nada com LDAP!

Quaisquer outras ideias para uma solução independente de tecnologia para transferir e transformar consultas definidas pelo usuário são também apreciado.

Foi útil?

Solução

Você pode usar a biblioteca LDAP compartilhada do servidor de diretório apache.

Está disponível em maven em

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

E você pode usá-lo como:

final ExprNode filter = FilterParser.parse(filterString);

Outras dicas

Você também pode olhar em usar servidor de diretório Apache seja para usar algumas de suas aulas como sugestão de lavinio para OpenLDAP ou para incorporá-lo como parte de sua aplicação.

OpenDS tem um método estático em uma classe chamada LDAPFilter chamado, simplesmente, decodificação , que leva um argumento de string, assim:

LDAPFilter parsed = LDAPFilter.decode(filter);

O javadoc é aqui .

É muito semelhante ao FilterParser do Apache DS, apesar de trabalhar com o resultado é um pouco diferente porque não há nenhuma hierarquia verdadeira herança substancial. Uma vantagem que eu encontrei foi que não reescrever extensível sintaxe regra de correspondência, por isso, se você está olhando para isso como uma maneira de filtros validar e normalizar isso é algo a ter em mente.

A ressalva é que ambos os analisadores esperam espaços em branco a ser filtrado de antemão, por isso certifique-se de executar algo parecido com isso em qualquer cadeia de entrada de antemão:

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

Espero que isso ajude.

A única biblioteca LDAP análise que eu conheço são os System.DirectoryServices queridos .NET. * Em teoria, você deve ser capaz de usar esta biblioteca em Mono para obter a independência tecnologia (excepto os provenientes mono ou .net em si).

Você já olhou para jldap, como parte de OpenLDAP?

O fonte está disponível , e há aulas para analisar ambos os URLs LDAP e expressões procurar . É mais do que você precisa, mas você pode ser capaz de usar apenas os objetos sem realmente executá-los em um servidor LDAP, se é isso que você quer fazer.

para esclarecer, você está definido em eles serem consultas LDAP syle, se você não está tentando ldap consulta.

você olhou algo assim?

http://josql.sourceforge.net/

recipientes maioria OSGi também contêm essa funcionalidade, uma vez estes tipos de filtros fazem parte da especificação OSGi .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top