jamesfredley commented on PR #15947:
URL: https://github.com/apache/grails-core/pull/15947#issuecomment-5160086422

   @jdaugherty Addressed in 73a0555772 (after merging latest `8.0.x`).
   
   ## Review responses
   
   | Item | Resolution |
   | --- | --- |
   | Suite flipped to secure mode | Removed the global `setup()` that forced 
`legacyBindableDefault=false`. Pre-existing `bindData` regressions run on the 
unconfigured permissive default again. Secure-mode cases call 
`enableSecureBinding()` in their own `given:`. Added unconfigured counterparts 
for the main compatibility claims. |
   | Unnecessary `bindable: true` on fixtures | Dropped the constraint-only 
fixture edits across `grails-test-suite-web`, `grails-databinding`, and 
`grails-test-suite-persistence`. Shared fixtures no longer bind identically in 
both modes. |
   | Cache `bindable: false` / unbindable names | Class-level 
`ConcurrentHashMap` for class-evaluated unbindables. Object-derived constraints 
are **not** class-cached (instance maps can differ). |
   | Cache negative include-list results | Cache miss of "no allowlist field" 
is stored as a sentinel and returned as `null` on hit. |
   | `exclude == null` dropped | Restored. Exclude-only in compatibility mode 
uses the bind-all marker so it does not intersect the class allowlist; secure 
mode still applies the allowlist when only excludes are supplied. Covered by 
default-mode tests. |
   | `SimpleDataBinder` empty whiteList | Documented that empty include binds 
nothing for direct callers and that the compatibility flag does not restore the 
old empty-list meaning. Added `SimpleDataBinderSpec` coverage. |
   | try covers recursive `bind` | Narrowed to 
`getDeclaredConstructor().newInstance()` in both `SimpleDataBinder` and 
`GrailsWebDataBinder`. |
   | Silent fail-closed on bad config | Unrecognised `legacyBindableDefault` 
values log a WARN naming the property and value, then fail closed. |
   | `Settings.LEGACY_BINDABLE_DEFAULT` unused | Single public definition in 
`Settings`; internal helper delegates to it; specs use `Settings`. |
   | `LegacyBindableDefaultConfigSpec` | Rewritten to drive public bind APIs; 
clears binding caches and warning state in cleanup. |
   | Typed `Map` branch | Builds converted entries only after `beforeBinding` 
on the source value; mutates the target map in place (getter-only safe); always 
calls `afterBinding`; conversion failures go through `addBindingError`. Upgrade 
notes + default-mode typed-map test added. |
   
   ## Verification
   
   `:grails-databinding-core:test`, `:grails-web-databinding:test`, and focused 
`:grails-test-suite-web:test` (`BindDataMethodTests`, `CommandObjectsSpec`, 
`DataBindingTests`, 
`DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec`, 
`LegacyBindableDefaultConfigSpec`, `SimpleDataBinderSpec`) all green.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to