2.4. Definition und Verwendung von Variablen

Variablen stellen einen Weg dar, der Anwendung auf ausbaubare Weise Informationen zur Verfügung zu stellen, welche vom Benutzer geliefert werden. Einige Anwendungen machen davon extensiven Gebrauch, während andere dies kaum nutzen.

Eine grundlegende Verwendung von Variablen besteht jedoch in ihrer Interpretation beim Laden der Einstellungen. Einzelne Einstellungen können in ihren Werten solche Variablen enthalten um z.B. den gleichen Einstellungswert für mehrere verschiedene Benutzer zu verwenden, dabei jedoch trotzdem jedem individuellen Benutzer seinen einzigartigen Wert zu garantieren.

Um grösstmögliche Flexibilität in verschiedenen Szenarien zu gewährleisten, können diese Variablen selbst als eine Einstellung spezifiziert werden. Die Einstellung variables spezifiziert den Pfad zu einer Datei mit Variablendefinitionen. Diese Definitionen können enweder im standard Java properties Format vorliegen, wobei der property Schlüssel als Variablenname verwendet wird und der Wert als Variableninhalt. Eine andere Möglichkeit besteht in einer XML Datei, welche dem XML Schema ReplacementMapperConfig.xsd genügt; dies erlaubt viel weiter gehende Möglichkeiten, die Variablen mittels mehrerer Dateien zu strukturieren.

Variablen erlauben es, die Definition eines oft verwendeten Werts an einer einzigen Stelle zu halten, während dieser Wert jedoch an vielen verschiedenen Stellen zum Einsatz kommt. So legt z.B. die vom System zur Verfügung gestellte Variable app.name den Speicherort verschiedener Einstellungsdateien fest, worin unterschiedliche anwendungsspezifische Einstellungen gespeichert werden: z.B. die Einstellung dialog-properties mit ihrem Vorgabewert von ${settings.dir}/${app.name}Dialog.properties wird für die Anwendung MyApp die Datei ..../MyAppDialog.properties verwenden.

Generell ist es dem Inhalt von Variablen erlaubt, seinerseits auf andere Variablen zu verweisen, was einen flexiblen Weg eröffnet, viele Dinge in Vorlagen abzulegen. Es ist dabei jedoch nicht unterstützt, Abhängigkeitsketten zu erstellen, welche Zyklen bilden. Der folgende Satz von Variablen ist gültig:

  template = eine Variable '${var-1}' mit dem Wert '${var-2}'
  var-1    = foo
  var-2    = bar
Dies würde auf den Wert „eine Variable 'foo' mit dem Wert 'bar'“ hinauslaufen. Würde jedoch die Variable var-1 umdefiniert als:
  var-1    = "Beispiel ${template}"
so ergäbe dies einen Zyklus: template => var-1 => template was jedoch nicht erlaubt ist.

Standardmässig werden Bereiche in Variableninhalten ersetzt, welche mit „ ${ “ beginnen und mit „ } “ enden. Solche Bereiche werden ersetzt mit dem Inhalt einer Variable mit dem Namen, welcher dem Bereich zwischen diesen Start/End-Markierungen entspricht, wie oben illustriert. Manchmal ist es bei der Kombination verschiedener Sätze von Variablen für unterschiedliche Zwecke jedoch erwünscht, die Expansion des einen Satzes erst einem späteren Prozess mit anderen Rahmenbedingungen zu überlassen. Für diesen Zweck ist es auch möglich, die Start/End-Markierungen einer Variablenreferenz im Inhalt neu zu definieren. Dies unterstützt allerdings nur die XML Form der Variablendefinition, das XML Schema definiert dies.