mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:39:29 +00:00
Prior to this commit, bean property path support would be duplicated in `AbstractNestablePropertyAccessor` and `PropertyAccessorUtils`. This means they both supported the parsing, validation and extraction of path segments. Implementations were not always in sync and could cause issues. This commit introduces a new `PropertyPath` type that holds the canonical form of the property path and the parsed path segments for property access. This implements an efficient parser that rejects invalid property paths early if they don't match the new grammar. `PropertyPath.parse(String, Options)` additionally accepts a maximum nesting depth, rejecting an excessively deep path immediately after parsing and before any navigation of an object graph begins. This moves the implementation introduced in gh-37252, but keeps the public configuration in place. `InvalidPropertyPathException` is introduced to report a syntactically invalid path, as distinct from a syntactically valid path that happens not to resolve against a particular target object (see `NotReadablePropertyException` and `NotWritablePropertyException`). It extends `PropertyAccessException`, but not `InvalidPropertyException`. Malformed paths should be collected into `PropertyBatchUpdateException` alongside other per-property failures. See gh-37275