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

Reply via email to