FreshMarker Ausgabeformate und Autoescaping

Bei der Verwendung einer Template-Engine ist die größte Herausforderung das Einfügen der variablen Inhalte in das Dokument. Hierbei ist neben der technischen Realisierung auch die Sicherheit zu beachten. Allzu leicht könnten sonst bösartige Inhalte in das generierte Dokument gelangen. Je nach Verwendung als E-Mail, Webseite oder Konfiguration wären so diverse Angriffsszenarien denkbar. Das Problem der Absicherung gegen jede Art von Injektion wird in FreshMarker durch die Verwendung spezieller Ausgabeformate umgesetzt. Je nach Ausgabeformat werden dann spezielle Zeichen in den Interpolations maskiert.

FreshMarker Fehlerbehandlung

Fehlerbehandlung ist ein zentrales Thema bei einer Template-Engine. Fehlerhafte Eingabedaten und Syntaxfehler im Template sollten schnell erkannt werden, damit der Entwickler nicht lange Zeit mit der Fehlersuche beschäftigt ist. Bei der Verwendung von FreshMarker treten Fehler in drei Phasen der Verwendung auf. Bei der Konfiguration der Template-Engine, dem Parsen der Template Vorlagen und beim Prozessieren des Templates.

FreshMarker Direktiven

Mit der Variableninterpolation erhalten die FreshMarker Templates einen ersten Schub von Dynamik. Durch Direktiven wird es darüber hinaus möglich, ganze Abschnitte eines Templates ein- und auszublenden oder mehrfach zu wiederholen. Die beiden bekanntesten Strukturen für solche Direktiven sollen hier mit ihrer Implementierung für FreshMarker vorgestellt werden.

FreshMarker Variableninterpolation

Die FreshMarker Template-Engine, kann bislang nur konstante Inhalte ausgeben. Damit die Template-Engine nützlich wird, müssen variable Inhalte möglich werden. Ausdrücke der Form ${expression} werden von der FreshMarker Grammatik als Variableninterplolationen erkannt und durch das Ergebnis des Ausdrucks expression ersetzt.

Die FreshMarker Grammatik

Im ersten Beitrag wurde aus der Vogelperspektive beschrieben, wie die FreshMarker Template-Engine zu bedienen ist. Ausgelassen wurde dabei, wie aus der Textdarstellung eines Templates eine Instanz der Klasse Template generiert wird. Um ein Template syntaktisch korrekt und sauber zu verarbeiten, bietet es sich an, einen passenden Parser zu verwenden. Mit dem Parser-Generator JavaCC 21 von Jonathan Revusky steht das passende Werkzeug zum Erzeugen eines eigenen Parsers zur Verfügung. JavaCC 21 liefert erfreulicherweise auch eine eigene FreeMarker Grammatik, mit der die eigene Entwicklung zügig beginnen kann.

FreshMarker, eine frische Template Engine für Java

Dieser und weitere Beiträge werden sich mit der Template-Engine FreshMarker beschäftigen. Das Besondere an dieser Template-Engine ist, dass sie noch nicht existiert. Die Beiträge werden, parallel zur Entwicklung der Template-Engine, technische Entscheidungen und verwendete Konzepte beleuchten.

Das vergessene Erbe

Dieses Beitrag handelt nicht von dem bekannten Code Smell Refused Bequest (dem ausgeschlagenen Erbe), sondern von den vielen Featuren bekannter und unbekannter Bibliotheken, die in Vergessenheit geraten. Bei manchen dieser Bibliotheken wird man irgendwann auf die unangenehme Art auf die vergessenen Möglichkeiten hingewiesen. So wie jüngst die Bibliothek Log4j2 mit den Security Vulnerabilities CVE-2021-44228, CVE-2021-45046 und CVE-2021-45105.

Technische Schulden – Tilgen, Tilgen, Tilgen

Hin und wieder geben aktuelle Diskussionen den Anstoß über gerne und häufig verwendete Begriffe einmal etwas genauer nachzudenken. Im diesem Fall über die Technischen Schulden. Was ist damit gemeint und wie ist mit ihnen umzugehen?

Das Tool

Agile Manifesto

Welcher Software Entwickler kennt nicht die Geschichte vom neuen Tool, das seine Arbeit enorm voranbringen soll. Die Firma schafft für jeden Entwickler eine Lizenz an und alle werden auf das neue Tool geschult. Drehen wir die Uhr dann einige Monate weiter, dann hat sich die Gruppe der Entwickler in mehrere Fraktionen aufgespalten. Eine kleine verschworene Gruppe von Nutzern, eine großen Fraktion von Kollegen, die das Tool unter Ihresgleichen verdammen und einer kleineren Fraktion von Entwicklern, die das Tool nicht mehr benutzen.

Spring Boot Validation Cheat Sheet

Wer sich jedes Mal fragt, wie die ganzen Validierungsannotationen heißen und bei welchen Java Typen sie verwendet werden dürfen, kann jetzt aufatmen. Hier kann man einen Spickzettel herunterladen.