Object-Graph Navigation Language

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. Januar 2007 um 20:47 Uhr durch Zwobot (Diskussion | Beiträge) (Bot-unterstützte Begriffsklärung: Java; kosmetische Änderungen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Object-Graph Navigation Language, abgekürzt als OGNL ist eine expression language zum Lesen und Schreiben von Eigenschaften in Java-Objekten. Dazu werden zum Setzen und zum Lesen des Wertes einer Eigenschaft die gleichen Ausdrücke verwendet. Zum Einsatz kommen kann OGNL z.B. beim Binden einer Darstellungsschicht (GUI) an Objekte in einem Datenmodell. Dabei ermöglicht OGNL außerdem "projection", "selection" und Pseudo-Lambda-Ausdrücke.

Bei einer "projection" wird für alle Elemente einer Collection die selbe Methode aufgerufen bzw. auf die selbe Eigenschaft zugegriffen und das Ergebnis dieser Operation(en) wiederum in einer Collection gespeichert.

Bei einer "selection" werden aus einer Menge von Elemente einer Collection bestimmte Elemente die die gestellte Bedingung erfüllen als Ergebnis in einer neuen Collection gespeichert.

OGNL besitzt eine vereinfachte Lambda Ausdruckssyntax, welche das Schreiben simpler Funktionen ermöglicht.

Beispiele

ein OGNL Ausdruck:

 code.toLowerCase().getBytes()[0].intValue.toString()
  • holt die Eigenschaft "code",
  • ruft für den resultierenden String die Methode toLowerCase() auf,
  • ruft für den daraus resultierenden String die Methode getBytes() auf,
  • extrahiert aus dem resultierenden byte Array den ersten Wert, kapselt dieses in einem Byte-Objekt
  • für welches wiederum die Eigenschaft intValue (durch Aufruf der Methode intValue()) ermittelt wird,
  • das daraus resultierende int wird wiederum in einem Integer-Objekt gekapselt welches durch Aufruf der Methode toString() in einen String verwandelt wird

projection:

 listeners.{delegate}

gibt eine Liste aller Delegates der Collection listeners zurück.

selection:

  listeners.{? #this instanceof KeyListener}

gibt eine Collection aller der listener zurück welche KeyListener sind.

Offizielle Website