Commit Graph

1269 Commits

Author SHA1 Message Date
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
Oliver Drotbohm
c4a51f1c24 DATACMNS-1480 - Updated changelog. 2019-04-01 20:56:25 +02:00
Oliver Drotbohm
eb79408556 DATACMNS-1464 - Updated changelog. 2019-04-01 19:36:56 +02:00
Oliver Drotbohm
b40ce01e54 DATACMNS-1504 - Updated changelog. 2019-04-01 18:52:16 +02:00
Oliver Drotbohm
66702a6c47 DATACMNS-1463 - Updated changelog. 2019-04-01 18:49:22 +02:00
Spring Operator
48c9297118 DATACMNS-1500 - URL Cleanup.
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 701 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).

Original Pull Request: #387
2019-03-22 11:00:44 +01:00
Spring Operator
38c2ec0ae3 DATACMNS-1500 - URL Cleanup.
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://help.eclipse.org/oxygen/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/task-using_external_null_annotations.htm (200) with 1 occurrences could not be migrated:
   ([https](https://help.eclipse.org/oxygen/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/task-using_external_null_annotations.htm) result SSLException).
* [ ] http://www.querydsl.com (200) with 2 occurrences could not be migrated:
   ([https](https://www.querydsl.com) result AnnotatedConnectException).
* [ ] http://www.querydsl.com/ (200) with 2 occurrences could not be migrated:
   ([https](https://www.querydsl.com/) result AnnotatedConnectException).
* [ ] http://xml.org/sax/features/external-general-entities (301) with 1 occurrences could not be migrated:
   ([https](https://xml.org/sax/features/external-general-entities) result SSLHandshakeException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://www.w3.org/2001/03/xml.xsd (ReadTimeoutException) with 1 occurrences migrated to:
  https://www.w3.org/2001/03/xml.xsd ([https](https://www.w3.org/2001/03/xml.xsd) result SSLException).
* [ ] http://www.w3.org/XML/1998/namespace (ReadTimeoutException) with 1 occurrences migrated to:
  https://www.w3.org/XML/1998/namespace ([https](https://www.w3.org/XML/1998/namespace) result SSLException).
* [ ] http://foo:9090 (UnknownHostException) with 2 occurrences migrated to:
  https://foo:9090 ([https](https://foo:9090) result UnknownHostException).
* [ ] http://http://www.querydsl.com (UnknownHostException) with 1 occurrences migrated to:
  https://http://www.querydsl.com ([https](https://https://www.querydsl.com) result UnknownHostException).
* [ ] http://apache.org/xml/features/disallow-doctype-decl (404) with 1 occurrences migrated to:
  https://apache.org/xml/features/disallow-doctype-decl ([https](https://apache.org/xml/features/disallow-doctype-decl) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html with 1 occurrences migrated to:
  https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html ([https](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) result 200).
* [ ] http://docs.spring.io/spring/docs/ with 1 occurrences migrated to:
  https://docs.spring.io/spring/docs/ ([https](https://docs.spring.io/spring/docs/) result 200).
* [ ] http://github.com/spring-projects/spring-data-commons with 1 occurrences migrated to:
  https://github.com/spring-projects/spring-data-commons ([https](https://github.com/spring-projects/spring-data-commons) result 200).
* [ ] http://goessner.net/articles/JsonPath/ with 1 occurrences migrated to:
  https://goessner.net/articles/JsonPath/ ([https](https://goessner.net/articles/JsonPath/) result 200).
* [ ] http://projects.spring.io/spring-data/ with 2 occurrences migrated to:
  https://projects.spring.io/spring-data/ ([https](https://projects.spring.io/spring-data/) result 200).
* [ ] http://stackoverflow.com/questions/tagged/spring-data with 2 occurrences migrated to:
  https://stackoverflow.com/questions/tagged/spring-data ([https](https://stackoverflow.com/questions/tagged/spring-data) result 200).
* [ ] http://www.regular-expressions.info/unicode.html with 2 occurrences migrated to:
  https://www.regular-expressions.info/unicode.html ([https](https://www.regular-expressions.info/unicode.html) result 200).
* [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 4 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* [ ] http://www.springframework.org/schema/context/spring-context.xsd with 8 occurrences migrated to:
  https://www.springframework.org/schema/context/spring-context.xsd ([https](https://www.springframework.org/schema/context/spring-context.xsd) result 200).
* [ ] http://www.springframework.org/schema/data/repository/spring-repository.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/data/repository/spring-repository.xsd ([https](https://www.springframework.org/schema/data/repository/spring-repository.xsd) result 200).
* [ ] http://www.vavr.io/ with 2 occurrences migrated to:
  https://www.vavr.io/ ([https](https://www.vavr.io/) result 200).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
  https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
  https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301).
* [ ] http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/ with 1 occurrences migrated to:
  https://docs.spring.io/spring-data/data-commons/docs/current/reference/html/ ([https](https://docs.spring.io/spring-data/data-commons/docs/current/reference/html/) result 301).
* [ ] http://help.github.com/forking/ with 1 occurrences migrated to:
  https://help.github.com/forking/ ([https](https://help.github.com/forking/) result 301).
* [ ] http://projects.spring.io/spring-data with 1 occurrences migrated to:
  https://projects.spring.io/spring-data ([https](https://projects.spring.io/spring-data) result 301).
* [ ] http://www.atomenabled.org/developers/syndication/atom-format-spec.php with 1 occurrences migrated to:
  https://www.atomenabled.org/developers/syndication/atom-format-spec.php ([https](https://www.atomenabled.org/developers/syndication/atom-format-spec.php) result 301).
* [ ] http://www.springframework.org/schema/data/jpa/spring-jpa.xsd with 2 occurrences migrated to:
  https://www.springframework.org/schema/data/jpa/spring-jpa.xsd ([https](https://www.springframework.org/schema/data/jpa/spring-jpa.xsd) result 301).
* [ ] http://www.springframework.org/schema/oxm/spring-oxm.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd) result 301).
* [ ] http://www.threeten.org/threetenbp with 2 occurrences migrated to:
  https://www.threeten.org/threetenbp ([https](https://www.threeten.org/threetenbp) result 301).
* [ ] http://www.xmlbeam.org with 2 occurrences migrated to:
  https://www.xmlbeam.org ([https](https://www.xmlbeam.org) result 301).
* [ ] http://www.springsource.org/download with 1 occurrences migrated to:
  https://www.springsource.org/download ([https](https://www.springsource.org/download) result 302).

# Ignored
These URLs were intentionally ignored.

* http://localhost:8080/persons with 1 occurrences
* http://localhost:8080/persons?page=1&size=20 with 1 occurrences
* http://localhost:8080?page=0&size=10 with 1 occurrences
* http://www.springframework.org/schema/beans with 8 occurrences
* http://www.springframework.org/schema/context with 16 occurrences
* http://www.springframework.org/schema/data/jaxb with 3 occurrences
* http://www.springframework.org/schema/data/jpa with 4 occurrences
* http://www.springframework.org/schema/data/repository with 20 occurrences
* http://www.springframework.org/schema/oxm with 2 occurrences
* http://www.springframework.org/schema/tool with 16 occurrences
* http://www.w3.org/1999/xhtml with 1 occurrences
* http://www.w3.org/2001/XMLSchema with 10 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 4 occurrences
* http://www.w3.org/2005/Atom with 4 occurrences

Original Pull Request: #367
2019-03-21 08:26:30 +01:00
Spring Operator
f341973210 DATACMNS-1500 - URL Cleanup.
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* http://maven.apache.org/xsd/maven-4.0.0.xsd with 1 occurrences migrated to:
  https://maven.apache.org/xsd/maven-4.0.0.xsd ([https](https://maven.apache.org/xsd/maven-4.0.0.xsd) result 200).
* http://www.springframework.org/schema/beans/spring-beans.xsd with 3 occurrences migrated to:
  https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200).
* http://www.springframework.org/schema/context/spring-context.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/context/spring-context.xsd ([https](https://www.springframework.org/schema/context/spring-context.xsd) result 200).
* http://www.springframework.org/schema/data/repository/spring-repository.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/data/repository/spring-repository.xsd ([https](https://www.springframework.org/schema/data/repository/spring-repository.xsd) result 200).
* http://www.springframework.org/schema/oxm/spring-oxm.xsd with 1 occurrences migrated to:
  https://www.springframework.org/schema/oxm/spring-oxm.xsd ([https](https://www.springframework.org/schema/oxm/spring-oxm.xsd) result 200).

# Ignored
These URLs were intentionally ignored.

* http://maven.apache.org/POM/4.0.0 with 2 occurrences
* http://www.springframework.org/schema/beans with 6 occurrences
* http://www.springframework.org/schema/context with 2 occurrences
* http://www.springframework.org/schema/data/jaxb with 1 occurrences
* http://www.springframework.org/schema/data/repository with 2 occurrences
* http://www.springframework.org/schema/oxm with 2 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 4 occurrences
* http://www.w3.org/2005/Atom with 1 occurrences

Original Pull Request: #366
2019-03-20 12:40:50 +01:00
Oliver Drotbohm
e9f77d6046 DATACMNS-1499 - Added new convenience factory methods on Range. 2019-03-14 13:25:49 +01:00
Oliver Drotbohm
4e6b12fc8a DATACMNS-1498 - Improved attribute lookup on RepositoryConfigurationSource. 2019-03-14 12:48:35 +01:00
Oliver Drotbohm
0bf160eb97 DATACMNS-1496 - Removed deprecations at least introduced in Lovelace. 2019-03-13 18:29:08 +01:00