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]
