The GitHub Actions job "CI" on grails-core.git/7.1.x-grailsutil-honor-filterer-config has succeeded. Run started by GitHub user codeconsole (triggered by codeconsole).
Head commit for run: cbfe2fc8e9c2b2d2625e97826d33b575dcb86e4e / Scott Murphy Heiberg <[email protected]> Address review: Class-valued filterer config, ClassLoader, defensiveness Follow-up on jdaugherty's review of the bootstrap-phase rework. GrailsBootstrapRegistryInitializer: - Read grails.logging.stackTraceFiltererClass as a raw value and accept both shapes. application.groovy is loaded into a property source that preserves value types, so a class literal arrives as a java.lang.Class; requesting it as a String threw ConverterNotFoundException out of the bootstrap close listener and failed startup. YAML/properties keep supplying the class name as a String. - Resolve the class name against the ApplicationContext ClassLoader instead of grails-core's own, so a filterer under grails-app or src/main/groovy is visible under spring-boot-devtools, where application classes live in a RestartClassLoader. - Guard both property reads. A non-boolean logFullStackTraceOnFilter value propagated a ConversionFailedException out of the close listener; a filterer misconfiguration now degrades to the default, as the javadoc already promised. - Move the promoted bean name here as STACK_TRACE_FILTERER_BEAN_NAME. It was in grails-bootstrap, which has no dependency on grails-core, so its javadoc link to this class could not resolve. Mirrors PluginDiscovery.BEAN_NAME. GrailsExceptionResolver: widen the promoted-bean lookup to catch BeansException, so an application bean of an unrelated type registered under the same name degrades to config-based construction rather than failing the context from setGrailsApplication. Document which instance wins when an application replaces the bean. Docs: move the upgrade note from upgrading71x.adoc to upgrading80x.adoc, since this ships in 8.0. Describe the fallback boundary as "any context not started through SpringApplication" (Grails unit tests boot a context but not through SpringApplication) and state that the installed filterer is JVM-global. Tests: replace the white-box reflection assertions with behavioural ones through GrailsUtil's public sanitize methods; add coverage for the Class literal form, ClassLoader resolution, non-boolean flag values and the bean-name type collision. Correct the integration spec's isolation claim -- the separate merged context isolates Spring contexts, not the JVM-global static -- and restore the default filterer in cleanupSpec. Report URL: https://github.com/apache/grails-core/actions/runs/30218659577 With regards, GitHub Actions via GitBox
