Build: #2853 was successful Scheduled with changes by Oliver Drotbohm <ogierke@pivotal.io>

Build result summary

Details

Completed
Duration
77 minutes
Labels
None
Agent
bamboo-23.af.pivotal.io
Revision
d5786edec772c44d79eb845b5645f49e3db0cc18 d5786edec772c44d79eb845b5645f49e3db0cc18
Total tests
2997
Successful since
#2795 ()

Tests

Sonar analysis results

ProjectQuality gate status
org.springframework.data:spring-data-commons

Code commits

Author Commit Message Commit date
Oliver Drotbohm <ogierke@pivotal.io> Oliver Drotbohm <ogierke@pivotal.io> d5786edec772c44d79eb845b5645f49e3db0cc18 d5786edec772c44d79eb845b5645f49e3db0cc18 DATACMNS-1610 - Polishing.
Oliver Drotbohm <ogierke@pivotal.io> Oliver Drotbohm <ogierke@pivotal.io> 5cdb3139a4a224417899ebaa00dbb7192e8899a7 5cdb3139a4a224417899ebaa00dbb7192e8899a7 DATACMNS-1610 - Improved property path access.
We now expose a dedicated PersistentPropertyPathAccessor and optionally take options for both the read and write access to properties. On read, clients can define to eagerly receive null in case one of the path segments is null. By default, we reject those as it indicates that there might be an issue with the backing object if the client assumes it can look up the more deeply nested path to receive a result.

On write access clients can define to either reject, skip or log intermediate null segments where skip means, that the setting is just silently aborted. Clients can also control how to deal with collection and map intermediates. By default we now propagate the attempt to set a value to all collection or map items respectively. This could be potentially extended to provide a filter receiving both the property and property value to selectively propagate those calls in the future.

The separation of these APIs (PersistentPropertyAccessor and PersistentPropertyPathAccessor) is introduced as the latter can be implemented on top of the former and the former potentially being dynamically generated. The logic of the latter can then be clearly separated from the actual individual property lookup. ConvertingPropertyAccessor is now a PersistentPropertyPathAccessor, too, and overrides SimplePersistentPropertyPathAccessor.getTypedProperty(…) to plug in conversion logic. This allows custom collection types being used if the ConversionService backing the accessor can convert from and to Collection or Map respectively.

Deprecated all PersistentPropertyPath-related methods on PersistentPropertyAccessor for removal in 2.3.

MappingAuditableBeanWrapperFactory now uses these new settings to skip both null values as well as collection and map values when setting auditing metadata.

Related tickets: DATACMNS-1438, DATACMNS-1461, DATACMNS-1609.

Jira issues

IssueDescriptionStatus
Unknown Issue TypeDATACMNS-1438Could not obtain issue details from Jira
Unknown Issue TypeDATACMNS-1461Could not obtain issue details from Jira
Unknown Issue TypeDATACMNS-1609Could not obtain issue details from Jira
Unknown Issue TypeDATACMNS-1610Could not obtain issue details from Jira