Domanda

Sto cercando una libreria Java autonoma che mi permetta di analizzare le espressioni di filtro in stile LDAP È tale cosa disponibile, o è consigliabile usare invece ANTLR e costruirlo da solo?

Come sfondo: il filtro stesso viene inviato attraverso una rete e voglio creare, ad esempio, i criteri di sospensione appropriati. Non sto facendo nulla con LDAP!

Sono apprezzate anche altre idee per una soluzione indipendente dalla tecnologia per il trasferimento e la trasformazione di query definite dall'utente.

È stato utile?

Soluzione

È possibile utilizzare la libreria LDAP condivisa del server di directory apache.

È disponibile in Mavven a

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

E puoi usarlo come:

final ExprNode filter = FilterParser.parse(filterString);

Altri suggerimenti

Puoi anche utilizzare server di directory Apache per utilizzare alcune delle sue classi come il suggerimento di Lavinio per OpenLDAP o per incorporarlo come parte dell'applicazione.

OpenDS ha un metodo statico su una classe chiamata LDAPFilter chiamato, semplicemente, decodifica , che accetta un argomento stringa, in questo modo:

LDAPFilter parsed = LDAPFilter.decode(filter);

Il javadoc è qui .

È molto simile al FilterParser di Apache DS, sebbene lavorare con il risultato sia un po 'diverso in quanto non esiste una vera gerarchia di ereditarietà sostanziale. Un vantaggio che ho riscontrato è che non ha riscritto la sintassi estensibile delle regole di corrispondenza, quindi se lo stai osservando come un modo per convalidare e normalizzare i filtri è qualcosa da tenere a mente.

Un avvertimento è che entrambi i parser si aspettano che gli spazi bianchi vengano filtrati in anticipo, quindi assicurati di eseguire qualcosa di simile su qualsiasi stringa di input in anticipo:

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

Spero che questo aiuti.

Le uniche librerie di analisi LDAP che conosco sono quelle .NET System.DirectoryServices. * In teoria dovresti essere in grado di utilizzare questa libreria in Mono per ottenere l'indipendenza tecnologica (oltre che da mono o .net stesso).

Hai guardato jldap come parte di OpenLDAP?

È disponibile la e ci sono classi per analizzare sia gli URL LDAP che espressioni di ricerca . È più di quanto sia necessario, ma potresti essere in grado di utilizzare solo gli oggetti senza eseguirli effettivamente su un server LDAP, se è quello che vuoi fare.

per chiarire, stai pensando che siano query di stile LDAP, se non stai cercando di interrogare ldap.

hai visto qualcosa del genere?

http://josql.sourceforge.net/

Anche la maggior parte dei contenitori OSGi contiene questa funzionalità, poiché questi tipi dei filtri fanno parte della specifica OSGi .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top