Automatisch generierte Enum Converter (2)

Im vorherigen Beitrag wurde ein Annotation Processor vorgestellt, mit dem AttributeConverter für Enum Klassen automatisch generiert werden können. Kaum war dieser fertig gestellt, bahnten sich schon die ersten Änderungen an. Die WithEnumConverter Annotation erhält die neuen Attribute ordinal, nullKeyForbidden, exceptionIfMissing und verliert das Attribut representation

Automatisch generierte Enum Converter

In diesem Beitrag finden zwei meiner Steckenpferde hier im Blog zusammen. Es sind die Annotation Processors und die Enums. Beide gemeinsam können ein schon lange bestehendes Problem der Enums auf recht elegante Weise lösen.

MessageFormat aufgefrischt

Java Bibliotheken

Die Klasse MessageFormat ist ein Urgestein der Java API und schon seit der Version 1.1 mit an Bord. Die Klasse ist ein nützlicher Helfer, wurde aber in den letzten Versionen der API stark vernachlässigt. Nicht nur in der Java API wurde sie längere Zeit nicht beachtet, auch manches Projekt hat diese Klasse unnötigerweise gemieden.

REST Endpunkte mit Filtern (2)

Im vorherigen Beitrag wurde ein einfache Lösung für REST Endpunkte mit Filtern vorgestellt. Ein Kritikpunkt an der vorgestellten Implementierung ist die starke Kopplung zwischen dem JPA Repository und dem Filterable. In diesem Bitrag werden wir diesen Ansatz mit dem EntityManager entkoppeln.

REST Endpunkte mit Filtern

Neben dem Sortieren und Paginieren ist das Filtern eine recht häufige Aktion auf REST Endpunkten. Im Gegensatz zu den beiden erstgenannten gibt es aber für das Filtern keine adäquate Lösung im Spring Boot Framework. Mit geringen Aufwand kann dies aber elegant mit den Spring Boot Hilfsmitteln ergänzt werden.

FreshMarker User Directives (2)

Im ersten Teil zum Thema User Directives wurde erläutert, wie diese in die FreshMarker Engine eingefügt sind und wie eigene Java Directives erstellt werden können. In diesem Teil werden die User Directives um FreshMarker Macros erweitert.

FreshMarker User Directives (1)

Zur Vereinfachung der FreshMarker Templates sollen wiederkehrende Teile als Funktionen und Macros formulierbar sein. Statt immer wieder ähnliche Teile im Template einzufügen, sollen diese durch parametrisierbare Aufrufe ersetzt werden. Wie in FreeMarker soll dies in FreshMarker über User Directives realisiert werden.

FreshMarker Feiertage und Enums

Zu den ersten Komponenten der FreshMarker Template-Engine gehörte ein einfaches Plug-In System. Durch diese Komponente wurde die Ergänzung um neue Built-Ins, Formatter und Mapper vereinfacht. Zwei neue Plug-Ins zeigen dabei Stärken und Schwächen des bisherigen Ansatzes.

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.