Commit Graph

3076 Commits

Author SHA1 Message Date
Jay Bryant
d18701a329 DATACMNS-1814 - Editing pass.
Edited some new content and (I think) some old content that I somehow missed.

Original pull request: #471.
2020-10-16 14:25:26 +02:00
Jay Bryant
5330d4c1e0 DATACMNS-1814 - Fixes missing anchors.
Fixes the problem of the "Using filters" link jumping to the top of
the document. There was another of these ("Configuration") later in
the document, and this commit fixes that one, too.

Original pull request: #470.
2020-10-16 14:25:19 +02:00
Christoph Strobl
85915268b2 DATACMNS-1798 - After release cleanups. 2020-10-14 14:48:47 +02:00
Christoph Strobl
d89f2b2f32 DATACMNS-1798 - Prepare next development iteration. 2020-10-14 14:48:45 +02:00
Christoph Strobl
5f3759b74a DATACMNS-1798 - Release version 2.4 RC2 (2020.0.0). 2020-10-14 14:28:55 +02:00
Christoph Strobl
ebe1064060 DATACMNS-1798 - Prepare 2.4 RC2 (2020.0.0). 2020-10-14 14:27:37 +02:00
Christoph Strobl
f4a8a8829f DATACMNS-1798 - Updated changelog. 2020-10-14 14:27:29 +02:00
Jens Schauder
e002afa4fc DATACMNS-1807 - Correctly tagging Kotlin code as such in the documentation. 2020-10-02 12:53:21 +02:00
Oliver Drotbohm
e3e23828ef DATACMNS-1806 - Polishing.
Styilistic tweaks (we only qualify writing field access with this).

Original pull request: #468.
2020-09-25 16:42:41 +02:00
Henning Rohlfs
a442b90021 DATACMNS-1806 - Prevent returning null from Lazy due to concurrency problem.
When accessed concurrently from multiple threads, Lazy.getNullable() could return null unexpectedly.

Original pull request: #468.
2020-09-25 16:42:41 +02:00
Mark Paluch
d10560f238 DATACMNS-1762 - Reintroduce calls to ReactiveWrapperConverters.supports(…) after decoupling from QueryExecutionConverters.
We now consider reactive wrapper types in all areas that previously relied on QueryExecutionConverters to handle reactive type information correctly. Specifically, we call supports(…) and perform type unwrapping to ensure to detect the correct return type.
2020-09-25 16:25:43 +02:00
Oliver Drotbohm
af9dd6110d DATACMNS-1726 - Polishing of nullability after Lombok removal.
Reviewed visibility modifiers manually introduced constructors previously provided by Lombok. Also some nullability constraints have been accidentally changed by that.
2020-09-25 15:29:08 +02:00
Mark Paluch
5876bd2e5a DATACMNS-1762 - Consider reactive types as wrappers during method introspection.
We now perform type unwrapping and introspection for reactive types for method return types and method arguments after decoupling QueryExecutionConverters.supports(…) from ReactiveWrapperConverters.
2020-09-25 14:41:54 +02:00
Christoph Strobl
f261220372 DATACMNS-1762 - Polishing.
Update JavaDoc, remove unused imports and reduce method visibility.

Original Pull Request: #459
2020-09-25 08:00:29 +02:00
Wim Deblauwe
97df0fa899 DATACMNS-1762 - Add tests for projections returning Optional.
Original Pull Request: #459
2020-09-25 08:00:08 +02:00
Mark Paluch
bd3992dfc5 DATACMNS-1762 - Support Optional wrapping for projection getters.
We now support nullable wrappers for projection interfaces. Getters are inspected whether their return type is a supported nullable wrapper. If so, then the value can be wrapped into that type. Null values default in that case to their corresponding empty wrapper representation.

Original Pull Request: #459
2020-09-25 07:59:02 +02:00
Mark Paluch
04f59f1307 DATACMNS-1762 - Extract NullableWrapperConverters from QueryExecutionConverters.
Nullable wrappers such as Java 8 Optional, Guava Optional, Scala Option and Vavr Option are now handled in NullableWrapperConverters and are no longer coupled to QueryExecutionConverters so that this functionality can be reused.

Original Pull Request: #459
2020-09-25 07:58:52 +02:00
Mark Paluch
9ced611ea5 DATACMNS-1762 - Remove ReactiveWrappers support from from QueryExecutionConverters.
ReactiveWrappers doesn't belong in there in the first place so we're removing ReactiveWrappers support from QueryExecutionConverters so ReactiveWrappers is used from parts that need to be reactive-aware.

Original Pull Request: #459
2020-09-25 07:54:21 +02:00
Mark Paluch
eadbe80f03 DATACMNS-1802 - Extract Flux.from(…) into own method.
For some reason, calling Flux.from(…) in its own, static method, heals NoClassDefFoundError even though the method is not used during runtime nor Publisher is defined in a method signature.
2020-09-22 16:07:52 +02:00
Mark Paluch
b3d0fea061 DATACMNS-1637 - Add default stream() method to CloseableIterator.
CloseableIterator now allows construction of a Stream that is associated with a close hook to release resources after its use.

CloseableIterator<Person> iterator = …;

try (Stream<Person> stream = iterator.stream()) {
	assertThat(stream.count()).isEqualTo(3);
}
2020-09-22 15:47:48 +02:00
Mark Paluch
82cb36f727 DATACMNS-1802 - Add support for suspend repository query methods returning List<T>.
We now support returning List<T> from a suspended repository query method to simplify consumption of collection queries.
2020-09-22 14:44:46 +02:00
Greg L. Turnquist
af00979784 DATACMNS-1799 - Only test other versions for local changes on main branch. 2020-09-18 10:57:59 -05:00
Mark Paluch
a2773ce9e9 DATACMNS-1786 - After release cleanups. 2020-09-16 14:05:28 +02:00
Mark Paluch
6fc95bed1b DATACMNS-1786 - Prepare next development iteration. 2020-09-16 14:05:24 +02:00
Mark Paluch
9111933ba0 DATACMNS-1786 - Release version 2.4 RC1 (2020.0.0). 2020-09-16 13:57:41 +02:00
Mark Paluch
7c02b47579 DATACMNS-1786 - Prepare 2.4 RC1 (2020.0.0). 2020-09-16 13:57:08 +02:00
Mark Paluch
4305e08210 DATACMNS-1786 - Updated changelog. 2020-09-16 13:56:46 +02:00
Mark Paluch
e4a42e9c86 DATACMNS-1787 - Updated changelog. 2020-09-16 12:16:30 +02:00
Mark Paluch
c4b1c49d9d DATACMNS-1774 - Updated changelog. 2020-09-16 11:20:06 +02:00
Mark Paluch
e5be54bd9a DATACMNS-1773 - Updated changelog. 2020-09-16 10:38:56 +02:00
Oliver Drotbohm
96097c290d DATACMNS-1736 - Polishing.
Avoid reuse of Lazy instances for (Sort|Pageable)HandlerMethodArgumentResolver and consistently use those to avoid breaking API changes in configuration classes.
2020-09-15 17:01:20 +02:00
Greg L. Turnquist
9d12ac7324 DATACMNS-1736 - Switch away from overrideable methods. 2020-09-15 17:01:19 +02:00
Mark Paluch
c10072c96f DATACMNS-1736 - Use BeanFactory lookup in configuration classes instead of intercepted local bean methods.
We now use @Configuration(proxyBeanMethods = false) and use BeanFactory bean lookups to avoid CGlib proxy creation.

Using Spring's BeanProvider.getIfUnique(…) instead of catching NoSuchBeanDefinitionException.
2020-09-15 17:01:19 +02:00
Mark Paluch
c85b524508 DATACMNS-1795 - Align checks in ReactiveWrappers with checks in ReactiveAdapterRegistry.
Checks in ReactiveWrappers align now with checks in ReactiveAdapterRegistry for a consistent configuration experience.
2020-09-10 10:35:13 +02:00
Mark Paluch
168583ea3c DATACMNS-1793 - Polishing.
Clean up invalid imports.
2020-09-09 13:42:01 +02:00
Mark Paluch
1a222d7f42 DATACMNS-1794 - Upgrade to XMLBeam 1.4.17. 2020-09-09 13:42:00 +02:00
Mark Paluch
f5e95f58c6 DATACMNS-1775 - Updated changelog. 2020-08-12 13:25:47 +02:00
Mark Paluch
7b9e074f05 DATACMNS-1756 - After release cleanups. 2020-08-12 12:00:22 +02:00
Mark Paluch
45294fca5c DATACMNS-1756 - Prepare next development iteration. 2020-08-12 12:00:19 +02:00
Mark Paluch
d46094b1b6 DATACMNS-1756 - Release version 2.4 M2 (2020.0.0). 2020-08-12 11:52:05 +02:00
Mark Paluch
20d6b79a01 DATACMNS-1756 - Prepare 2.4 M2 (2020.0.0). 2020-08-12 11:51:40 +02:00
Mark Paluch
f5ed286851 DATACMNS-1756 - Updated changelog. 2020-08-12 11:51:17 +02:00
Mark Paluch
fb9dbb0cc2 DATACMNS-1764 - Fix CoroutineAdapterInformation when Kotlin reflection is absent.
We now correctly determine the parameter count instead of returning a stating no-op object to correctly compare whether the target method uses the same count of arguments.

Original Pull Request: #455.
2020-08-11 15:38:04 +02:00
Mark Paluch
01e394b913 DATACMNS-1764 - Polishing.
Move Publisher decoration into its own type to avoid a static reference to Publisher. Fix imperative repository MethodLookups.

Original Pull Request: #455.
2020-08-11 15:03:24 +02:00
Christoph Strobl
b667dfa779 DATACMNS-1764 - Capture reactive invocation on per subscription basis.
Original Pull Request: #455
2020-08-11 13:53:30 +02:00
Mark Paluch
35a3d3cde9 DATACMNS-1764 - Allow registration of RepositoryFactory customizers.
Original Pull Request: #455
2020-08-11 13:41:38 +02:00
Mark Paluch
e77947f0a5 DATACMNS-1763 - Allow registration of QueryMethod invocation listeners.
We now allow for registering RepositoryMethodInvocationListeners to notify listeners upon repository method invocations (query methods and repository fragments). Listeners are notified upon method completion reporting the repository interface, the invoked methods, duration, outcome and arguments.

Original Pull Request: #455
2020-08-11 13:40:57 +02:00
Mark Paluch
d840057b0c DATACMNS-1783 - Simplify null check in PersistentEntityIsNewStrategy.
Switch from Number.class.isInstance(…) method call to instanceof check.
2020-08-11 10:16:28 +02:00
Mark Paluch
e72470993d DATACMNS-1754 - Polishing.
Revert bean name change so all nested repository interface components (repository bean, fragment bean, legacy custom implementation bean) remain prefixed with their enclosing type name.

Adopt tests. Add test for RepositoryBeanDefinitionRegistrar. Extend documentation.

Original pull request: #460.
2020-08-10 16:33:21 +02:00
Kyrylo Merzlikin
2a44d2394c DATACMNS-1754 - Support implementation lookup for nested repositories and fragments.
Problem: while repository and fragment interfaces are discovered
correctly (provided that considerNestedRepositories=true), their
implementations are not found/registered despite proper class naming.

Cause: DefaultImplementationLookupConfiguration works in such way that
for nested interface (i.e. one whose class name includes name of the
enclosing class) expected implementation class name is built including
that enclosing class name. In the same time actual implementation class
names are always "localized" (i.e. stripped from enclosing class name,
if any) before matching. This makes matching implementation classes
against nested interface impossible.

Solution: when building expected implementation class name, use "local"
interface class name, so that it can match any implementation class that
follows naming convention "SimpleInterfaceName" + "ImplemenetationPostfix".

Original pull request: #460.
2020-08-10 16:29:38 +02:00