Commit Graph

1279 Commits

Author SHA1 Message Date
Mark Paluch
9ebbd9e33f DATACMNS-1544 - Prepare 2.2 RC2 (Moore). 2019-08-05 15:35:05 +02:00
Mark Paluch
5c85f47feb DATACMNS-1544 - Updated changelog. 2019-08-05 15:34:54 +02:00
Mark Paluch
b609cd0167 DATACMNS-1543 - Updated changelog. 2019-08-05 11:34:28 +02:00
Mark Paluch
a7c76d5593 DATACMNS-1533 - Updated changelog. 2019-08-05 11:09:00 +02:00
Sangwoo Lee
ff02d34474 DATACMNS-1557 - Fix typo in Sort Javadoc.
From `ASC` to `DESC`.

Original pull request: #400.
2019-07-29 11:07:00 +02:00
Mark Paluch
88b0b3c924 DATACMNS-1556 - Store values as array in ParametersParameterAccessor.
Prevents changes in store modules that expose values as array.
2019-07-25 14:12:11 +02:00
Mark Paluch
b8c0a2fa8f DATACMNS-1556 - Deeply inspect query results deeply for the need of query post-processing.
We now inspect returned Collections whether we need to convert these at all. If not, we skip conversion.

Also, allocate GenericConversionService only once for memory-efficiency.
2019-07-25 14:12:11 +02:00
Mark Paluch
94c4713e0f DATACMNS-1556 - Conditionally copy and unwrap query method arguments.
ParametersParameterAccessor now inspects invocation arguments whether we need to unwrap these at all. If not, we skip copying the list of values.
2019-07-25 14:12:11 +02:00
Mark Paluch
f1bc778098 DATACMNS-1556 - Remove capturing lambdas from hot code paths.
Replaced orElseThrow with if blocks. Introduce nullable RepositoryComposition.getMethod(Method) to avoid Optional handling in hot code paths.
2019-07-25 14:12:11 +02:00
Mark Paluch
972449ef2d DATACMNS-1556 - Limit default method invocation only to interfaces that actually declare default methods. 2019-07-25 14:12:11 +02:00
Mark Paluch
293bbd9a63 DATACMNS-1556 - General performance improvements in repository execution.
We now avoid the allocation of an Optional instance in the lookup of a dynamic projection in ParameterAccessor. Also, Lazy now exposes a ….getNullable() to be favored over ….getOptional() for hot code paths.

Replaced Stream and Optional usage with for-loops and nullable return values. Reuse parameter names to avoid repeated annotation lookups. Reuse result from Parameters.getBindable(). Introduce ParametersParameterAccessor.getValues() to consistently reuse a single accessor instance allowing access to the unwrapped values. Introduce type cache to QueryExecutionConverters to quickly reject types that do not require wrapping. Avoid recalculation of QueryMethod.isCollectionQuery().
2019-07-25 14:12:11 +02:00
Oliver Drotbohm
e0f2d65d73 DATACMNS-1555 - Support for extracting properties during a PersistentPropertyPath traversal.
PersistentPropertyAccessor now has an overloaded method to pass in a TraversalContext that can be prepared to property handlers for PersistentProperties. During the traversal, the handler is called with the value for the property so that it can e.g. extract list elements, map values etc.
2019-07-22 10:56:07 +02:00
Mark Paluch
704913c866 DATACMNS-1554 - Polishing.
Replace AtTest(expected = …) and ExpectedException with the corresponding AssertJ assertThatExceptionOfType(…) and assertThatIllegalArgumentException().isThrownBy(…).
2019-07-10 11:47:46 +02:00
Mark Paluch
660006b8c9 DATACMNS-1554 - Migrate tests to AssertJ. 2019-07-10 10:32:25 +02:00
Oliver Drotbohm
fa9e5b799a DATACMNS-1552 - Test case to verify Option values are returned as is.
Make sure that the fix for DATACMNS-1524 fixes this ticket as well. A bit of whitespace in QueryExecutionResultHandler.
2019-07-04 12:23:14 +02:00
Oliver Drotbohm
d29fefca5b DATACMNS-1524 - Fix performance regression in QueryExecutionResultHandler.
A side effect of the fix for DATACMNS-1482 trigged source objects that already perfectly match the desired return type would still be subject to detailed inspection of potential conversions, which – by definition – will not kick in.

The code has now been changed to only trigger detailed inspection for collection values.

Related tickets: DATACMNS-1482.
2019-07-02 14:25:08 +02:00
Oliver Drotbohm
736d147446 DATACMNS-1550 - Polishing.
Javadoc wording and formatting.
2019-07-01 15:34:19 +02:00
Jens Schauder
f29756e5f8 DATACMNS-1550 - Added RevisionType to RevisionMetadata. 2019-07-01 15:34:19 +02:00
Mark Paluch
1e98932278 DATACMNS-1545 - Polishing.
Fix dangling callout.

Original pull request: #398.
2019-07-01 15:05:45 +02:00
Christoph Strobl
62f05057ec DATACMNS-1545 - Fix documentation anchors for entity callback API.
Original pull request: #398.
2019-07-01 15:05:40 +02:00
Oliver Drotbohm
ed0d30b4d6 DATACMNS-1551 - Polishing.
Method order in SortHandlerMethodArgumentResolver.
2019-07-01 14:30:48 +02:00
Oliver Drotbohm
4c1aed27d6 DATACMNS-1551 - SortHandlerMethodArgumentResolver now drops dot-only property segments.
If plain dots were submitted as elements in a Sort expression to be parsed by SortHandlerMethodArgumentResolver, those dots would be considered a property of the sort expression, which is of course wrong. We now drop property candidates solely consisting of dots and whitespace.
2019-07-01 14:16:09 +02:00
Michael Simons
38b08f4e27 DATACMNS-1548 - Fix JavaDoc on AuditingHandler#setModifyOnCreation.
Original pull request: #397.
2019-06-24 10:54:39 +02:00
Christoph Strobl
defee9437a DATACMNS-1514 - Prepare 2.2 RC1 (Moore). 2019-06-14 14:43:17 +02:00
Christoph Strobl
d729791238 DATACMNS-1514 - Updated changelog. 2019-06-14 14:43:07 +02:00
Christoph Strobl
b16db35660 DATACMNS-1532 - Updated changelog. 2019-06-14 13:27:14 +02:00
Christoph Strobl
84049e9f8e DATACMNS-1467 - Apply suggested documentation changes.
Original Pull Request: #332
2019-06-07 14:30:48 +02:00
Mark Paluch
687222d1fa DATACMNS-1467 - Polishing.
Tweak docs.

Original Pull Request: #332
2019-06-07 14:30:00 +02:00
Christoph Strobl
dde9a651ba DATACMNS-1467 - Decouple sync and reactive bits.
Add dedicated interfaces for sync and reactive usage.
Hide default implementation and use reflective callback method lookup.
Update documentation and add initial reference documentation snippet for store specific modules.

Original Pull Request: #332
2019-06-07 14:29:00 +02:00
Mark Paluch
52724cd5dd DATACMNS-1467 - Entity Callback API draft.
This is a draft for a possible Entity Callback API heavily inspired by Spring Framework's Application Event listeners. Entity callbacks are callbacks for entities that allow for entity modification at certain check points such as before saving an entity or after loading it.

Entity callbacks consist of a marker-interface for all entity callback types and the EntityCallbacks API to dispatch callbacks.

Entity callbacks are picked up from the ApplicationContext and invoked sequentially according to their ordering.

Usage example:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MyConfig.class);

SimpleEntityCallbacks callbacks = new SimpleEntityCallbacks(ctx);

PersonDocument personDocument = new PersonDocument(null, "Walter", null);
PersonDocument afterCallback = callbacks.callback(personDocument, BeforeSaveCallback.class,
		BeforeSaveCallback::onBeforeSave);

Mono<PersonDocument> afterCallback = callbacks.callbackLater(personDocument, ReactiveBeforeSaveCallback.class,
		ReactiveBeforeSaveCallback::onBeforeSave);

@Configuration
static class MyConfig {

	@Bean
	BeforeSaveCallback<Person> personCallback() {
		return object -> {
			object.setSsn(object.getFirstName().length());
			return object;
		};
	}

	@Bean
	MyReactiveBeforeSaveCallback callback() {
		return new MyReactiveBeforeSaveCallback();
	}

}

class MyReactiveBeforeSaveCallback implements ReactiveBeforeSaveCallback<Person> {

	@Override
	public Mono<Person> onBeforeSave(Person object) {

		PersonDocument result = new PersonDocument(object.getFirstName().length(), object.getFirstName(),
				object.getLastName());

		return Mono.just(result);
	}
}

Original Pull Request: #332
2019-06-07 14:26:38 +02:00
Mark Paluch
83611de861 DATACMNS-1500 - URL Cleanup. 2019-06-05 11:16:03 +02:00
Jens Schauder
467f60ffdc DATACMNS-1538 - Polishing.
Removed Hamcrest and the `ExpectedException` rule and replaced it with AssertJ.
Removed now obsolete assertions checking against old Spring Framework versions.
Formatting.

Original pull request: #396.
2019-06-05 11:00:28 +02:00
arielcarrera
098842765d DATACMNS-1538 - Repository proxy post processors in CDI.
Add support for custom repository proxy post processors in CDI.

Original pull request: #396.
2019-06-05 10:54:57 +02:00
Mark Paluch
efa529a7a6 DATACMNS-1540 - Use thread-safe path cache in QuerydslPredicateBuilder.
We now use ConcurrentHashMap instead of HashMap to cache Path instances by PathInformation.
2019-05-27 08:41:51 +02:00
Christoph Strobl
d6bb21d24f DATACMNS-1534 - Cache BeanFactory lookup for EvaluationContextExtension.
We now cache the BeanFactory lookup for EvaluationContextExtension within the ExtensionAwareEvalutationContextProvider to avoid (expensive) repeated context scans when creating the actual EvaluationContext.

Original pull request: #395.
2019-05-14 12:25:01 +02:00
Mark Paluch
15969ee01f DATACMNS-1531 - Updated changelog. 2019-05-13 18:19:07 +02:00
Mark Paluch
46a4e2ffe0 DATACMNS-1530 - Updated changelog. 2019-05-13 14:59:23 +02:00
Mark Paluch
9934695343 DATACMNS-1515 - Prepare 2.2 M4 (Moore). 2019-05-13 11:59:04 +02:00
Mark Paluch
fe691b41a4 DATACMNS-1515 - Updated changelog. 2019-05-13 11:58:51 +02:00
Oliver Drotbohm
58119b29d8 DATACMNS-1505 - Updated changelog. 2019-05-10 14:18:08 +02:00
Oliver Drotbohm
426036f2a7 DATACMNS-1507 - Updated changelog. 2019-05-10 12:57:19 +02:00
Oliver Drotbohm
a45a0ded9c DATACMNS-1518 - Fixed detection of varargs overloads for SpEL expressions.
Before this commit we haven't properly resolved methods on a root object provided by an EvaluationContextExtension that was using varargs. With a vararg method, the number of parameters handed into the method is not necessary equal to the number of parameters. We previously simply skipped methods with a different number of arguments. We now try direct matches first but calculate valid varargs alternatives in case that initial lookup fails and try to match those alternatives.

This lookup is implemented in ….util.ParameterTypes now and used by ….spel.spi.Function. The latter now also handles the actual invocation of those methods properly by collecting the trailing arguments into an array.
2019-05-09 13:05:11 +02:00
Oliver Drotbohm
e31c7aed51 DATACMNS-1526 - Adapt to API changes in Spring HATEOAS. 2019-05-08 19:10:04 +02:00
David Schneider
a8e90b1932 DATACMNS-1510 - Fix phrasing in Javadoc of @Param.
Original pull request: #389.
2019-04-23 17:14:31 +02:00
Jerzy Kwiatkowski
2b6682d3b1 DATACMNS-1520 - Fix typo in Javadoc.
Original pull request: #393.
2019-04-23 17:11:18 +02:00
Christoph Strobl
314b5c5842 DATACMNS-1493 - Prepare 2.2 M3 (Moore). 2019-04-11 11:23:56 +02:00
Christoph Strobl
6ac4922616 DATACMNS-1493 - Updated changelog. 2019-04-11 11:23:48 +02:00
Oliver Drotbohm
a5681f637c DATACMNS-1497 - Polishing.
RepositoryBeanDefinitionRegistrarSupport now also overrides registerBeanDefinitions(AnnotationMetadata, BeanDefinitionRegistry) so that unit test in downstream modules still work.

Added defaulting of BeanNameGenerator in XmlRepositoryConfigurationSource so that we use an AnnotationBeanNameGenerator if a DefaultBeanNameGenerator is handed in.

Related tickets: spring-projects/spring-framework#22591
2019-04-03 11:53:58 +02:00
Oliver Drotbohm
1150e409ca DATACMNS-1497 - Polishing. 2019-04-03 10:21:28 +02:00
Oliver Drotbohm
753d8bbb33 DATACMNS-1497 - Configuration infrastructure now considers scanning BeanNameGenerator.
We now implement the newly introduced ImportBeanDefinitionRegistrar overload additional provided with a BeanNameGenerator configured for the import scanning. We forward this into our bean name generation infrastructure as fallback.

Related tickets: spring-projects/spring-framework#22591
2019-04-03 10:20:47 +02:00