EN · DE · RU · FR · ES

#2770: LessResourceReference.java

projectforge-wicket/src/main/java/de/micromata/less/LessResourceReference.java Wicket-Ressourcenreferenz (LESS/CSS) · projectforge-wicket/src/main/java/de/micromata/less/LessResourceReference.java 72 Zeilen · 35 Code · 27 Kommentare · 10 leer
Eine benutzerdefinierte Wicket-ResourceReference-Implementierung, die die kompilierte CSS-Ausgabe des LESS-Compilers in Wickets Ressourcen-Mounting-System einbindet. Anstatt CSS aus dem Klassenpfad zu bedienen (wie ein standardmäßiges PackageResource), umschließt diese Klasse einen FileResourceStream, der auf den Dateisystempfad verweist, in den der LESS-Compiler seine Ausgabe schreibt – dies ermöglicht dynamische CSS-Kompilierung zur Entwicklungszeit, während das kompilierte Ergebnis über Wickets standardmäßige Ressourcen-URL-Endpunkte mit Cache-Busting-Versionierung ausgeliefert wird.

Architektur

Warum eine benutzerdefinierte ResourceReference?

Die standardmäßige Wicket-PackageResourceReference bedient nur Dateien aus dem Klassenpfad. Der LESS-Kompilierungs-Workflow schreibt .css-Dateien in ein Dateisystemverzeichnis (unter baseDir/styles/), das nicht im Klassenpfad liegt. LessResourceReference umschließt den Pfad der kompilierten Datei und delegiert an eine private LessPackageResource-Unterklasse, die getResourceStream() überschreibt, um einen FileResourceStream zurückzugeben, anstatt im Klassenpfad zu suchen. Dies fügt sich sauber in Wickets Ressourcen-Mounting-API ein – das kompilierte CSS wird als .../styles/projectforge-version-{timestamp}.css bereitgestellt.

Klassenentwurf

Die private innere Klasse LessPackageResource erweitert PackageResource, umgeht jedoch dessen Klassenpfad-Suche vollständig. Der Konstruktor übergibt Dummy-Werte (null für Locale, Stil, Variation), da diese Parameter für eine dateibasierte Ressource irrelevant sind.

Git-Verlauf

CommitWas geändert wurde
868d6abb7 bis ceb63e8a1Sechs jährliche Aktualisierungen der Copyright-Header (2001-2021 → 2001-2026). Keine Änderungen an der Java-Klassenlogik oder -struktur – die Implementierung dieser Datei ist seit ihrer ursprünglichen Erstellung stabil. Der Copyright-Zeitraum wird jedes Jahr im Rahmen einer projektweiten Aktualisierung der Header erweitert.