Commit Graph

924 Commits

Author SHA1 Message Date
Oliver Gierke
ffbaeddedb DATACMNS-613 - Removed custom CollectionFactory after upgrade to Spring 4.1. 2015-03-31 17:13:37 +02:00
Oliver Gierke
1c175ef59b DATACMNS-673 - Enhanced RepositoryMetadata to allow returning alternative domain types.
In case a RepositoryMetadata implementation alters the domain type the repository is actually handling, we still have to be able to find the repository based on the type originally declared in the repository.

The newly introduced getAlternativeDomainTypes() is now used by Repositories to register a repository for all types returned by that method, too, so that this reverse lookup still works.
2015-03-31 16:30:39 +02:00
Oliver Gierke
5d6fd02ce1 DATACMNS-664 - Removed obsolete build profiles for Travis CI build.
Removed build profiles for Spring 4.0.x snapshots and Spring 4.1 after we upgraded to Spring 4.1 as general baseline.
2015-03-27 13:38:38 +01:00
Oliver Gierke
53d19c72c3 DATACMNS-663 - Fixed typo in BytecodeGeneratingEntityInstantiator. 2015-03-27 12:33:13 +01:00
Oliver Gierke
346016f67d DATACMNS-662 - After release cleanups. 2015-03-23 13:56:32 +01:00
Spring Buildmaster
3185f2c04c DATACMNS-662 - Prepare next development iteration. 2015-03-23 04:20:00 -07:00
Spring Buildmaster
49981eb385 DATACMNS-662 - Release version 1.10.0.RELEASE. 2015-03-23 04:19:56 -07:00
Oliver Gierke
2cba292686 DATACMNS-662 - Prepare 1.10.0.RELEASE (Fowler GA). 2015-03-23 12:08:20 +01:00
Oliver Gierke
be4245061b DATACMNS-662 - Updated changelog. 2015-03-23 12:03:52 +01:00
Thomas Darimont
6f7d8489bf DATACMNS-654 - Polishing.
Added missing documentation for geospatial return types.
Fixed typo in GeoResult JavaDoc.
2015-03-23 11:13:36 +01:00
Oliver Gierke
51b155c0a8 DATACMNS-654 - Polishing.
Removed obsolete line-breaks in repositories documentation. Replace TWR worth with less ambiguous try-with-resources. Slight rewording. A few more details and fixed use of monospace font in return type reference.

Original pull request: #119.
2015-03-21 18:27:17 +01:00
Thomas Darimont
3a02d6f14e DATACMNS-654 - Documented usage of Java 8 Streams in repositories.
Added section to repository documentation on how to use streams. Added an overview table for the generally supported return types for query methods.

Original pull request: #119.
2015-03-21 18:09:18 +01:00
Oliver Gierke
5487395397 DATACMNS-661 - Polishing.
Removed the ability to configure a custom SpElExpressionParser for now as it's not really part of the performance optimization. Polished assertions in SpelEvaluatingMethodInterceptor.

Original pull request: #118.
2015-03-19 18:57:20 +01:00
Thomas Darimont
0cf395c1b1 DATACMNS-661 - Improvements in SpelAwareProxyProjectionFactory.
We now allow a SpelExpressionParser to be configured on the SpelAwareProxyProjectionFactory. This parser is then passed on to SpelEvaluatingMethodInterceptor. We also now eagerly pre-parse any SpEL expression in @Value annotations on methods of the projection interface. This avoids repeated evaluations during the actual method invocations.

Original pull request: #118.
2015-03-19 18:57:19 +01:00
Oliver Gierke
537fc430a9 DATACMNS-660 - Web configuration support now picks up configuration annotated with @SpringDataWebConfigurationMixing.
Introduced @SpringDataWebConfigurationMixing that can be used on configuration classes that are supposed to contribute components to the Application context when @EnableSpringDataWebSupport is used.

SpringDataWebConfigurationImportSelector scans the org.springframework.data package for classes annotated with that annotation and adds them to the classes to be considered config classes.
2015-03-17 17:08:31 +01:00
Oliver Gierke
d7adfbd859 DATACMNS-656 - Make application of default transactions configurable on TrasnactionalRepositoryFactoryBeanSupport.
TrasnactionalRepositoryFactoryBeanSupport now exposes a setEnableDefaultTransactions(…) which, if disabled, causes the TransactionalRepositoryProxyPostProcessor not to be registered and thus no default transactions to be applied.

Related tickets: DATAJPA-685.
2015-03-10 19:18:28 +01:00
Oliver Gierke
57180568c5 DATACMNS-655 - Invoking default methods on projection proxies now works.
Extracted DefaultMethodInvokingMethodInterceptor from RepositoryFactorySupport and register it within ProxyProjectionFactory if the code is running on Java 8.

Original pull request: #117.
2015-03-10 11:47:12 +01:00
Oliver Gierke
ff25e3375d DATACMNS-652 - After release cleanups. 2015-03-05 19:47:25 +01:00
Spring Buildmaster
f5ad5b9571 DATACMNS-652 - Prepare next development iteration. 2015-03-05 08:23:40 -08:00
Spring Buildmaster
5eb6fe2d2f DATACMNS-652 - Release version 1.10.0.RC1. 2015-03-05 08:23:38 -08:00
Oliver Gierke
b0cc811381 DATACMNS-652 - Prepare 1.10.0.RC1 (Fowler RC1). 2015-03-05 17:14:28 +01:00
Oliver Gierke
f40e44e515 DATACMNS-652 - Updated changelog. 2015-03-05 17:14:27 +01:00
Oliver Gierke
e2a7057af9 DATACMNS-652 - Removed JDK 8 reference from TypeDiscoverer.
Removed accidentally introduced reference to JDK 8's Executable as common super type of Constructor and Method.
2015-03-05 17:14:27 +01:00
Oliver Gierke
156cb4419a DATACMNS-652 - Upgraded to Spring HATEOAS 0.17.0.RELEASE. 2015-03-05 10:40:21 +01:00
Oliver Gierke
2d75cf2c43 DATACMNS-651 - Introduced a Range value type.
Primarily intended to be used with Distance instances, we introduce a Range value type. Distance now has factory methods to create Range instances between two distances. To support this, Distance now implements comparable based on the normalized value of it.

Tiny refactoring in TypeDiscoverer to avoid code duplication between the lookup of parameter type information for constructors and methods.
2015-03-04 17:34:32 +01:00
Oliver Gierke
186cb25605 DATACMNS-650 - Polishing.
Added stream to the list of supported query method prefixes. Allow Stream to be used as return type for paginating queries, too.

Renamed Java8StreamUtils to StreamUtils. Some additional JavaDoc.

Original pull request: #116.
2015-03-03 18:10:40 +01:00
Thomas Darimont
e92c235fdf DATACMNS-650 - Introduced CloseableIterator abstraction as a foundation for streaming of results.
A CloseableIterator abstracts the underlying result with support for releasing the associated resources via close() which can be transparently be used with try-with-resources in Java 7 since Closeable implements AutoCloseable from Java 7 on upwards. Added detector methods to QueryMethod to check whether the current method returns a Stream. 

Introduced ReflectionUtils.isJava8StreamType to safely detect whether the given type is assignable to a Java 8 Stream. Introduced CloseableIteratorDisposingRunnable that can be registered as a cleanup action on a Stream.

Original pull request: #116.
2015-03-03 16:08:00 +01:00
Oliver Gierke
64db95fb1e DATACMNS-649 - Fixed detail in reference docs on extending all repositories.
The custom factory created to extend all repositories with additional behavior needs to return the type of the custom repository base class from getRepositoryBaseClass(…) to make sure the infrastructure can use it to inspect the CRUD methods correctly. Previously the documentations showed an interface being returned.

Code formatting in the example and inline code highlighting.
2015-02-24 16:34:40 +01:00
Thomas Darimont
ec643d21cb DATACMNS-554 - Added QueryDslPredicateExecutor.findAll(Predicate, Sort).
We now support findAll on QueryDslPredicateExecutor that accepts a Querydsl Predicate and a Sort.

Original pull request: #115.
2015-02-24 09:40:16 +01:00
Oliver Gierke
950e0d3b7d DATACMNS-647 - Added test case for collection parameter invocation of query method through ReflectionRepositoryInvoker.
Added test cases to make sure that request parameters both in separate values (i.e. ?ids=1&ids=2) as well as comma separated ones (i.e. ?ids=1,2) are translated into a Collection correctly.

Related ticket: spring-hateoas/#280.
2015-02-10 20:12:47 +01:00
Oliver Gierke
32036d7fdb DATACMNS-646 - Enable Spring 4.2 build profile for Travis. 2015-02-10 16:57:25 +01:00
Arlo Louis O'Keeffe
f1057205c2 DATACMNS-645 - Fix typo in reference documentation.
Original pull request: #113.
2015-02-10 11:33:40 +01:00
Oliver Gierke
0c65c7bb67 DATACMNS-638, DATACMNS-643 - Support for JSR-310 and ThreeTen datetime types.
Extend AuditableBeanWrapper to allow access to the last modification date of a target object. Made AuditableBeanWrapperFactory an interface and renamed what’s been previously known under this name as DefaultAuditableBeanWrapperFactory.

The components previously relying on a MappingContext to lookup a PersistentEntity now use PersistentEntities to be able to back a collection of MappingContexts behind that and also avoid unmanaged types to be added to the MappingContext.

We now also register the JSR-310 and ThreeTen back-port converters with the ConversionService to be able to get and set auditing dates as these types.
2015-02-04 19:30:02 +01:00
Oliver Gierke
fe49e4cf14 DATACMNS-642 - Avoid setter lookup in BeanWrapper for if field access is used.
We now delay the lookup of the setter method until we discover we really  need to use property access.
2015-02-04 17:11:48 +01:00
Oliver Gierke
bff8caba75 DATACMNS-641 - Order clauses in derived repository clauses now default to ascending order.
OrderBySource now considers the Asc and Desc keywords in an OrderBy-clause optional defaulting to ascending order as Sort defaults to anyway.
2015-02-04 12:06:58 +01:00
Oliver Gierke
2b4d173320 DATACMNS-640 - Fixed potential NullPointerException in PageableHandlerMethodArgumentResolver.
We now double check the fallback Pageable for being null before trying to lookup the Sort to fall back.
2015-02-04 10:32:17 +01:00
Oliver Gierke
57a42ababd DATACMNS-630 - Added HandlerMethodArgumentResolver to create proxies for interfaces.
We now ship a ProxyingHandlerMethodArgumentResolver that gets registered when @EnableSpringDataWebSupport is activated. It creates Map-based proxy instances for interfaces used as Spring MVC controller method parameters.
2015-01-30 15:15:55 +01:00
Oliver Gierke
127747f3fb DATACMNS-563 - Added explicit unit test for one-indexed parameters on PagedResourcesAssembler. 2015-01-30 14:45:55 +01:00
Oliver Gierke
f438281fc3 DATACMNS-633 - Updated changelog. 2015-01-28 20:42:39 +01:00
Oliver Gierke
20de2308c5 DATACMNS-632 - Updated changelog. 2015-01-28 09:55:52 +01:00
Thomas Darimont
0fb572b550 DATACMNS-636 - Add QueryDslPredicateExecutor.exists(…) which accepts a Querydsl predicate.
Original pull request: #112.
2015-01-26 11:03:13 +01:00
Oliver Gierke
df9f8c417e DATACMNS-637 - Performance improvements.
Made ObjectInstantiator interface public as otherwise the generated class to implement it cannot access it and thus the usage of the ByteCodeGeneratingEntityInstantiator fails completely.

PreferredConstructor.isEnclosingClassParameter(…) now eagerly returns if the parameter itself is not an enclosing one and thus avoids a collection lookup and equals check. Moved equals check for the type to the very end of the equals check to increase the chances that other inequality guards kick in earlier.

AbstractMappingContext now leaves the non-null-check for getPersistentEntity(…) to the factory method of ClassTypeInformation.

We now pre-calculate the hash codes for TypeInformation implementations as far as possible as the instances are used as cache keys quite a lot. The same applies to AbstractPersistentProperty.

BasicPersistentEntity now uses an ArrayList we sort during the verify() phase to mimic the previous behavior wich was implemented using a TreeSet as ArrayLists are way more performant when iterating over all elements which doWithProperties(…) is doing which is used quite a lot.

BeanWrapper now avoids the getter lookup if field access is used.

SimpleTypeHolder now uses a CopyOnWriteArrySet to leniently add types detected to be simple to the set of simple types to avoid ongoing checks against the inheritance hierarchy.
2015-01-25 17:43:59 +01:00
Oliver Gierke
5cc4811c52 DATACMNS-635 - Slice and Page can now be mapped using a Converter.
Introduced a map(Converter converter) method on Slice and Page to be able to easily transform the elements and create a new Slice or Page of the transformation result.

On Java 8 this allows code like this:

Page<String> strings = …;
Page<Integer> ints = strings.map(String::length);
2015-01-22 19:01:16 +01:00
Oliver Gierke
aff6b6cca7 DATACMNS-563 - Added unit tests to verify enabling one-indexed parameters are considered correctly when resolving Pageables. 2015-01-20 20:21:02 +01:00
Oliver Gierke
2c772d60de DATACMNS-634 - Polishing.
Simplified type traversal in Repositories.getRepositoryFactoryInfoFor(…) and unit tests.

Original pull request: #110.
2015-01-20 17:53:33 +01:00
Thomas Eizinger
9f21cc2f28 DATACMNS-634 - Repositories now als returns repositories for super types of a domain class.
In case the repository lookup for a given domain type fails we traverse the given types super-types and try to detect a repository for those.

Original pull request: #110.
2015-01-20 17:53:20 +01:00
Oliver Gierke
b2251aa5b9 DATACMNS-621 - Polishing.
Simplified implementation of Path conversion. Inlined helper domain types to not to pollute the packages with types that are only used within that very one test class.

Original pull request: #111.
2015-01-20 16:31:30 +01:00
Christoph Strobl
95bda862e7 DATACMNS-621 - QSort now treats nested paths correctly.
We now inspect intermediate path elements to build sort order accordingly.

Original pull request: #111.
2015-01-20 16:25:52 +01:00
Oliver Gierke
2e62a16f69 DATACMNS-631 - Made RepositoryFactorySupport.getRepositoryMetadata(…) protected.
Some JavaDoc polishes.
2015-01-15 15:46:26 +01:00
Oliver Gierke
a98d5c7ec6 DATACMNS-630 - Integrate projection infrastructure from Spring Data REST.
Ported the projection infrastructure previously residing in Spring Data REST and extended it by defaulting to a Map-backed source to store and retrieve data.

Separated out the SpEL based functionality mostly for SOC-reasons and easier testability.

Related tickets: DATAREST-437, DATACMNS-618, DATACMNS-89.
2015-01-11 19:35:31 +01:00