LessWicketApplicationInstantiator.javalesscss-java dans le cycle de vie de l'application Wicket : elle localise les fichiers sources .less sur le classpath, les compile en CSS sur le système de fichiers, monte le CSS compilé en tant que ressource Wicket versionnée (via LessResourceReference), et — en mode développement — enregistre des observateurs de fichiers qui recompilent automatiquement lorsqu'un fichier source .less est modifié. Le nom du fichier CSS compilé inclut l'horodatage de démarrage du serveur comme marqueur de version pour l'invalidation de cache (projectforge-version-{timestamp}.css).La classe implémente Serializable et maintient un champ statique instance. Lors du démarrage de l'application Wicket, une instance est créée avec le chemin source .less, le chemin cible .css et un baseDir du système de fichiers. La méthode instantiate() est appelée, laquelle :
ClassPathResource de SpringcompileCss — utile en production où le CSS doit être pré-compilé)LessResourceReference pour la sortie compiléeLorsque WebConfiguration.isDevelopmentMode() retourne vrai, la classe exploite l'infrastructure IModificationWatcher intégrée de Wicket pour surveiller la source LESS principale et toutes ses dépendances @import. Lorsqu'un fichier change, l'observateur déclenche une recompilation — les développeurs voient les modifications CSS immédiatement sans redémarrer le serveur. L'observateur couvre l'ensemble du graphe d'import transitif via mainLessSource.getImports().values().
La méthode encodePathWithCachingStrategy remplace .css par -version-{startTime}.css dans le chemin de la ressource. L'horodatage (WicketApplication.getStartTime()) change à chaque redémarrage du serveur, ce qui invalide efficacement les caches des navigateurs après les déploiements. Le préfixe -version- est délibérément différent du -ver- par défaut de Wicket pour éviter les collisions avec le versionnage interne des ressources de Wicket.
La méthode statique renderCompiledCssResource(IHeaderResponse) est le point d'entrée appelé par les templates de page pour inclure le CSS compilé dans les en-têtes HTML. Elle génère un CssReferenceHeaderItem pointant vers la ressource montée. Si l'instanciateur n'a pas été initialisé (le champ statique instance est nul), il enregistre une erreur — c'est un filet de sécurité pour les pages rendues avant la fin de la compilation LESS.
| Commit | Ce qui a changé |
|---|---|
868d6abb7 à 4a6390e11 | Six commits couvrant les mises à jour des années de copyright (2021→2026) et une fusion de migration Wicket 8 (4548710df). Les mises à jour de copyright suivent le modèle de balayage annuel des en-têtes. Le commit de migration Wicket 8 (4a6390e11) est une fusion de feature/wicket8 dans develop — bien que le diff de fusion lui-même puisse ne pas montrer de modifications dans ce fichier spécifique, la branche a apporté des changements d'API significatifs dans l'ensemble du module wicket. La logique de la classe elle-même est restée stable ; toutes les entrées d'historique sont des modifications d'infrastructure plutôt que des modifications de fonctionnalités. |