LessWicketApplicationInstantiator.javalesscss-java en el ciclo de vida de la aplicación Wicket: localiza archivos fuente .less en el classpath, los compila a CSS en el sistema de archivos, monta el CSS compilado como un recurso Wicket versionado (usando LessResourceReference) y — en modo desarrollo — registra observadores del sistema de archivos que recompilan automáticamente cuando cualquier archivo fuente .less cambia. El nombre del archivo CSS compilado incluye la marca de tiempo de inicio del servidor como marcador de versión para invalidar caché (projectforge-version-{timestamp}.css).La clase implementa Serializable y mantiene un campo estático instance. Durante el inicio de la aplicación Wicket, se crea una instancia con la ruta fuente .less, la ruta destino .css y un baseDir del sistema de archivos. Se llama al método instantiate(), el cual:
ClassPathResource de SpringcompileCss — útil para producción donde el CSS debe estar precompilado)LessResourceReference para la salida compiladaCuando WebConfiguration.isDevelopmentMode() devuelve verdadero, la clase aprovecha la infraestructura IModificationWatcher incorporada de Wicket para monitorear la fuente LESS principal y todas sus dependencias @import. Cuando cualquier archivo cambia, el observador dispara una recompilación — los desarrolladores ven los cambios CSS inmediatamente sin reiniciar el servidor. El observador cubre todo el grafo de importación transitivo mediante mainLessSource.getImports().values().
El método encodePathWithCachingStrategy reemplaza .css con -version-{startTime}.css en la ruta del recurso. La marca de tiempo (WicketApplication.getStartTime()) cambia en cada reinicio del servidor, invalidando efectivamente los cachés del navegador después de los despliegues. El prefijo -version- es deliberadamente diferente del -ver- predeterminado de Wicket para evitar colisiones con el versionado interno de recursos de Wicket.
El método estático renderCompiledCssResource(IHeaderResponse) es el punto de entrada llamado por las plantillas de página para incluir el CSS compilado en los encabezados HTML. Renderiza un CssReferenceHeaderItem que apunta al recurso montado. Si el instanciador no ha sido inicializado (la instance estática es nula), registra un error — esto es un mecanismo de seguridad para páginas renderizadas antes de que la compilación LESS se complete.
| Commit | Qué cambió |
|---|---|
868d6abb7 hasta 4a6390e11 | Seis commits que abarcan actualizaciones de año de copyright (2021→2026) y una fusión de migración a Wicket 8 (4548710df). Las actualizaciones de copyright siguen el patrón de barrido anual de encabezados. El commit de migración a Wicket 8 (4a6390e11) es una fusión desde feature/wicket8 hacia develop — aunque el diff de fusión en sí mismo puede no mostrar cambios en este archivo específico, la rama trajo cambios significativos en la API en todo el módulo wicket. La lógica de la clase en sí ha sido estable; todas las entradas del historial son cambios de infraestructura más que modificaciones de funcionalidad. |