Frage

Ich bin für eine eigenständige Java-Bibliothek, die mir LDAP Stil Filterausdrücke Ist so etwas möglich, zu analysieren erlaubt oder ist es ratsam, ANTLR zu verwenden, anstatt und baut es von einer selbst?

Als Hintergrund: der Filter selbst wird durch ein Netz gestellt, und ich möchte sagen erstellen, die entsprechenden Hibernate Kriterien. Ich mache nichts mit LDAP!

Jede andere Ideen für eine technologieunabhängige Lösung zur Übertragung und Transformation Abfragen Benutzer definiert werden ebenfalls geschätzt.

War es hilfreich?

Lösung

können Sie den freigegebenen LDAP-Bibliothek Apache Directory-Servers verwendet werden.

Es ist in Maven bei

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

Und Sie können es gerne verwenden:

final ExprNode filter = FilterParser.parse(filterString);

Andere Tipps

Sie auch bei Verwendung von Apache Directory-Server aussehen könnte entweder für einige seiner Klassen wie lavinio Vorschlag mit für OpenLDAP oder es als Teil Ihrer Anwendung einbetten.

OpenDS eine statische Methode hat eine Klasse namens LDAPFilter genannt, einfach, dekodieren , die ein String-Argument, etwa so:

LDAPFilter parsed = LDAPFilter.decode(filter);

Die javadoc ist hier .

Es ist sehr ähnlich wie Apache DS ist FilterParser, obwohl mit dem Ergebnis, arbeitet ein wenig anders ist, da es keine echte wesentliche Vererbungshierarchie ist. Ein Vorteil, den ich fand, war, dass es nicht erweiterbar passende Regel Syntax hat zu umschreiben, also, wenn Sie dies als eine Möglichkeit suchen, Filter zu validieren und zu normalisieren, dass etwas im Auge zu behalten.

Ein Nachteil ist, dass beiden Parser Leerzeichen erwarten vorher herausgefiltert werden, so stellen Sie sicher, dass Sie so etwas wie dies auf einem beliebigen Eingabestring laufen vorher:

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

Hope, das hilft.

Die einzige LDAP-Parsing-Bibliothek, die ich kenne, sind diejenigen .NET System.DirectoryServices. * In der Theorie sollten Sie in der Lage sein, diese Bibliothek in Mono verwenden Technologie Unabhängigkeit (außer von Mono- oder .net selbst) zu erhalten.

Haben Sie bei jldap sah, als Teil von OpenLDAP?

Die Quelle verfügbar , und es gibt Klassen für die Analyse sowohl LDAP-URLs und Suchausdrücke . Es ist mehr, als Sie brauchen, aber Sie könnten die Objekte nur ohne tatsächlich auszuführen, sie gegen einen LDAP-Server verwenden können, wenn es das ist, was Sie tun wollen.

zu klären, sind Sie auf sie gesetzt LDAP syle Abfragen sein, wenn Sie nicht fragen ldap versuchen.

Sie haben sah so etwas wie das?

http://josql.sourceforge.net/

Die meisten OSGi-Container enthalten auch diese Funktionalität, da diese Art Teil der OSGi-Spezifikation von Filtern sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top