Commit Graph

2719 Commits

Author SHA1 Message Date
Christoph Strobl
0c0c1afc8e Add WindowIterator and rename Scroll to Window.
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
2023-03-16 13:10:40 +01:00
Mark Paluch
035965a3a2 Introduce Scroll API.
See: #2151
Original Pull Request: #2787
2023-03-16 13:09:39 +01:00
Oliver Drotbohm
a5de842460 Update section of the reference documentation regarding Page and Slice.
Update to latest addition in support for Slice. Also update to renamed methods and types in Spring HATEOAS.

Related ticket: #1307
2023-03-01 15:13:55 +01:00
Oliver Drotbohm
116730c168 Polishing.
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.
2023-02-28 17:00:37 +01:00
Michael Schout
70f21bda9f Add SlicedResourcesAssembler for web integration.
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
2023-02-28 10:06:10 +01:00
Mark Paluch
83655663ea Refine QuerydslRepositoryInvokerAdapter nullability assertions.
QuerydslRepositoryInvokerAdapter now rejects null predicates to enforce nullability constraints.

Closes #1501
2023-02-24 11:04:11 +01:00
Mark Paluch
34f212ff61 Upgrade to Maven Wrapper 3.9.0.
See #2779
2023-02-20 11:58:05 +01:00
Christoph Strobl
81f9cef672 After release cleanups.
See #2777
2023-02-17 14:25:48 +01:00
Christoph Strobl
6fc56c4b88 Prepare next development iteration.
See #2777
2023-02-17 14:25:46 +01:00
Christoph Strobl
f1ebce258c Release version 3.1 M2 (2023.0.0).
See #2777
2023-02-17 14:22:30 +01:00
Christoph Strobl
09e25a417a Prepare 3.1 M2 (2023.0.0).
See #2777
2023-02-17 14:22:15 +01:00
Christoph Strobl
2fd7afce3d After release cleanups.
See #2734
2023-02-17 13:31:54 +01:00
Christoph Strobl
a36dbd52b7 Prepare next development iteration.
See #2734
2023-02-17 13:31:52 +01:00
Christoph Strobl
7b9a91d251 Release version 3.1 M1 (2023.0.0).
See #2734
2023-02-17 13:27:49 +01:00
Christoph Strobl
44ad6e8480 Prepare 3.1 M1 (2023.0.0).
See #2734
2023-02-17 13:27:08 +01:00
Mark Paluch
028d312c39 Fix broken and known-redirect links in reference documentation.
Closes #2774
2023-02-15 11:08:35 +01:00
Mark Paluch
f82a48454e Polishing.
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
2023-02-14 14:29:12 +01:00
Oliver Drotbohm
16e7e7c79b Query method parameters are now aware of aggregate reference type.
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
2023-02-14 14:28:05 +01:00
Mark Paluch
9bc6d2b6df Update CI properties.
See #2734
2023-01-30 10:49:49 +01:00
Mark Paluch
942fc6a319 Upgrade to Maven Wrapper 3.8.7.
See #2769
2023-01-30 10:48:07 +01:00
ByungjunYou
7cf4cf9baa Fix a typo in javadoc.
Closes #2739
2023-01-23 14:13:37 +01:00
John Blum
7fedd5f3ec Fix Spring Boot dependency version property name.
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
2023-01-18 15:43:43 -08:00
Mark Paluch
b3dcbbe1a7 Polishing.
Reorder statements for higher cohesion.

See #2760
Original pull request: #2762
2023-01-11 11:15:39 +01:00
Christoph Strobl
0bd2714595 Use unique bean name for configuration post processors.
Closes #2760
Original pull request: #2762
2023-01-11 11:15:39 +01:00
Mark Paluch
4c2b8ac4c8 Polishing.
Introduce common exclusion rules for constructors.

See: #2744
Original pull request: #2746
2023-01-11 11:11:14 +01:00
Christoph Strobl
1d7c1ff6e0 Exclude synthetic constructors from AOT inspection.
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
2023-01-11 11:08:13 +01:00
Christoph Strobl
a2b3615572 Exclude local and anonymous classes from AOT type inspection.
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
2023-01-11 11:08:13 +01:00
Oliver Drotbohm
6fd8ae4917 Improve Lazy.toString().
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.
2023-01-05 11:45:00 +01:00
Mark Paluch
14919995ad Extend license header copyright years to 2023.
See #2756
2023-01-02 09:53:28 +01:00
John Blum
bdfb1f8a7f Fix formatting in PropertyReferenceException message.
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.
2022-12-12 13:02:23 -08:00
Mark Paluch
f8d6c9f026 Polishing.
Avoid caching. Expand exception handling to all reflective exceptions. Fix since tags.

See: #2721
Original pull request: #2743.
2022-12-12 10:37:56 +01:00
Christoph Strobl
016e8c2779 Register reflection hints for Querydsl Q types.
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.
2022-12-12 10:37:56 +01:00
Mark Paluch
14d76ab148 Fix wording in reference documentation.
Closes #2749
2022-12-09 08:57:13 +01:00
Mark Paluch
eee3239376 Update CI properties.
See #2734
2022-11-18 15:31:10 +01:00
Mark Paluch
9c2f99348c After release cleanups.
See #2715
2022-11-18 14:30:20 +01:00
Mark Paluch
6f47fa763d Prepare next development iteration.
See #2715
2022-11-18 14:30:18 +01:00
Mark Paluch
ac92b5ee9e Release version 3.0 GA (2022.0.0).
See #2715
2022-11-18 14:26:22 +01:00
Mark Paluch
d2e894200f Prepare 3.0 GA (2022.0.0).
See #2715
2022-11-18 14:26:12 +01:00
schauder
1f1c34b423 Add reference to release notes.
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
2022-11-10 10:21:06 +01:00
Mark Paluch
b8804be340 After release cleanups.
See #2722
2022-11-04 15:26:39 +01:00
Mark Paluch
40f193b660 Prepare next development iteration.
See #2722
2022-11-04 15:26:37 +01:00
Mark Paluch
1c507f5c15 Release version 3.0 RC2 (2022.0.0).
See #2722
2022-11-04 15:23:17 +01:00
Mark Paluch
2dc7c1421c Prepare 3.0 RC2 (2022.0.0).
See #2722
2022-11-04 15:23:05 +01:00
Jens Schauder
d56bbbdefb Make dependency tests based on ArchUnit.
The DependencyTests are reimplemented using ArchUnit and enabled.

See #2708
Original pull request #2706
2022-11-02 11:08:37 +01:00
Mark Paluch
6190baa3db Move ReactiveWrappers into o.s.d.util package.
ReactiveWrappers is not tied to repositories so it does not need to reside in the repository.util package. This utility is now located in the data.util package for a better module design and to prevent package cycles.

See #2708
2022-11-02 10:52:11 +01:00
Mark Paluch
5b784d006f Polishing.
Remove duplicate license headers. Avoid fully-qualified type usage where possible.

See #2708
2022-11-02 10:51:42 +01:00
Christoph Strobl
8d424855da Resolve package cycle between repository.config and repository.aot.
Closes #2708
2022-11-02 10:51:26 +01:00
Mark Paluch
0e00d5fd3f Update CI properties.
See #2722
2022-10-31 10:36:32 +01:00
Mark Paluch
92a6ec800c Polishing.
Use for-loop instead of stream to reduce overhead.

See #2722
2022-10-27 09:36:31 +02:00
Mark Paluch
0e57ea8872 Polishing.
Add reactive Query by Example and reactive/imperative Querydsl type hints.

See #2717
Original pull request: #2720
2022-10-19 11:44:58 +02:00