The intend of WindowIterator is to support users who need to iterate multiple windows. It keeps track of the position and loads the next window if needed so that the user does not have to interact with the position at all.
Also remove the Window methods to get the first/last position and enforce the index based variant.
Update the documentation to make use of the newly introduced API.
See: #2151
Original Pull Request: #2787
Imports, Javadoc, ticket references in test cases.
Removed the need for MethodParameterAware… flavors of the ResourceAssemblers by keeping the MethodParameter reference in the original assemblers in the first place. Extracted common Pageable MethodParameter lookup code into PageableMethodParameterUtils.
Related ticket: #1307.
Added SlicedResourcesAssembler to esaily convert Slice instances into SlicedResource instances and automatically build the required previous/next link based on PageableHandlerMethodArgumentResolver present in the MVC configuration. The assembler can either be injected into a Spring MVC controller or a controller method. The latter will then assume the controller methods URI to be used as pagination link base.
Added necessary SlicedResourcesAssemblerArgumentResolver and MethodParameterAwareSlicedResourcesAssembler classes and wire up HateoasAwareSpringDataWebConfiguration configuration beans to that SlicedResourcesAssembler's can be auto-injected into controllers.
Closes#1307
Use consistently domain type instead of introducing a new terminology to repository infrastructure.
Rename Kotlin variant of ParameterUnitTests to KParameterUnitTests to avoid duplicate classes.
See #2770
Original pull request: #2771
To support the binding of Class parameters to queries for declared query methods, we have to be able to differentiate them from Class parameters that are supposed to represent projections. We can do that by relating the declared Class' element type to the aggregate root type as a Class typed to that or any subtype of it will never trigger a projection by definition.
So far the Parameter(s) abstraction was solely created from a query method's Method. We now changed that for QueryMethod to forward the aggregate type detected on the RepositoryMetadata and consider it during the detection of dynamic projection parameters.
As a mitigating measure, we now also support @Param on Class-typed parameters to explicitly mark them for query binding. This is primarily to be able to add this support to the 2.7
The changes are built in a way that modules extending that mechanism will continue to work as is but see deprecation warnings on methods and constructors involved. Adapting extending code to the new APIs will automatically enable the support for bindable Class parameters on query methods.
Fixes#2770.
Original pull request: #2771
The version property used by Spring Boot to manage Spring Data modules pulled in transitively by the Spring Data BOM has changed from 'spring-data-releasetrain.version' to 'spring-data-bom.version'.
Closes#2766
Java8 bytecode may contain synthetic constructors that refer to anonymous classes which should not be inspected.
Eg. the following construct results in bytecode as listed further down below.
public enum Outer {
INSTANCE {
@Override
public Inner getInnerType() {
return Inner.STANDALONE;
}
},
public abstract Inner getInnerType();
}
synthetic Outer(java.lang.String arg0, int arg1, Inner$1 arg2)
See: #2744
Original pull request: #2746
Also update the type filter that would not mach types directly present in the given package.
Modify type contribution method to allow store specific override.
Closes: #2744
Original pull request: #2746
Added dedicated Lazy.toString() rendering the resolved value's ….toString() method but resorts to a constant [Unresolved] if it's not already resolved. An additional ….toString(Supplier<String>) allows to customize the fallback message if needed.
Fixes#2751.
A message like, "No property 'creat' found for type 'User' Did you mean ''created''" is now properly formatted as:
"No property 'creat' found for type 'User'; Did you mean 'created'".
Closes#2750.
This commit introduced support for registering GraalVM native reflection type hints for Querydsl Q types that target domain types used in the repository interface declaration.
At this point we only do a simple lookup for Q types based in the very same package that implement EntityPath.
More advanced configuration (eg. base package and type prefix), potentially available via EntityPathResolver are not taken into account as this would require eager bean resolution from the application context, which is likely to trigger additional infrastructure. In this case the user is required to register Q types manually.
Closes: #2721
Original pull request: #2743.
This adds a asciidoc snippet to be included in other modules documentation.
The snippet contains a reference to the release notes.
For simplicity the current version does not try to link directly to the proper version or module, but just references an overview which the user may use for further navigation.
Original pull request #2723