Commit Graph

1790 Commits

Author SHA1 Message Date
Oliver Drotbohm
bb44322b3a DATACMNS-1453 - Polishing.
Renamed test methods and made use of AssertJ assertions to verify exceptions being thrown.

Original pull request: #328.
2018-12-20 15:53:20 +01:00
Francisco Soler
789099f6b9 DATACMNS-1453 - Fixed wrong assertion in AuditingBeanDefinitionRegistrarSupport.
Original pull request: #328.
2018-12-20 15:52:06 +01:00
Oliver Drotbohm
d8705c1cca DATACMNS-1448 - Repositories now favors primary repositories.
If multiple repositories pointing to a single domain type are found we now favor the one registered as primary bean definition. This allows allows reliable disambiguation on which repository is supposed to be used for generic repository interactions.

Related tickets: DATAREST-923.
2018-12-12 22:33:02 +01:00
Oliver Drotbohm
97390a1eef DATACMNS-1447 - Streamable now exposes Collectors.
Added Streamable.toStreamable() and ….toStreamable(Collector) to allow the creation of a Streamable from streams wither using a default List-based intermediate collector (former) or providing an explicit one (latter).
2018-12-12 11:26:15 +01:00
Christoph Strobl
daaa16f195 DATACMNS-1441 - After release cleanups. 2018-12-11 11:07:52 +01:00
Christoph Strobl
fb32ef83d1 DATACMNS-1441 - Prepare next development iteration. 2018-12-11 11:07:51 +01:00
Christoph Strobl
df066475de DATACMNS-1441 - Release version 2.2 M1 (Moore). 2018-12-11 10:53:53 +01:00
Christoph Strobl
8021dc35ba DATACMNS-1441 - Prepare 2.2 M1 (Moore). 2018-12-11 10:53:11 +01:00
Christoph Strobl
250d396a8f DATACMNS-1441 - Updated changelog. 2018-12-11 10:53:07 +01:00
Oliver Drotbohm
0731b72ea5 DATACMNS-1444 - Polishing.
Removed references to Serializable in repository interface declarations. Reformatting to waste less space with lines only containing ellipsis.
2018-12-11 10:01:16 +01:00
Oliver Drotbohm
defbff4bea DATACMNS-1444 - Restructured query method documentation.
Moved collection return type and nullability handling to query method sections.
2018-12-11 09:41:06 +01:00
Oliver Drotbohm
638e9569cb DATACMNS-1444 - Added documentation on Streamable and collection return types.
Includes documentation of Vavr return types.
2018-12-11 09:40:21 +01:00
Oliver Drotbohm
f2967a919e DATACMNS-1443 - Fixed Querydsl web data binding for blank strings.
We now use StringUtils.hasLength(…) in the check whether to drop request elements from binding instead of ….hasText(…) as the latter drops blank strings so that's impossible to search for properties that contain a blank.
2018-12-10 16:55:26 +01:00
Mark Paluch
901d8b60b9 DATACMNS-1442 - Simplify reference documentation setup. 2018-12-10 10:05:59 +01:00
Oliver Drotbohm
4537c11eba DATACMNS-1440 - Added converters to parse LocalDate(Time) and Instant from their toString() representation. 2018-12-08 12:28:00 +01:00
Oliver Drotbohm
b3879a2f4f DATACMNS-1346 - Polishing.
License headers, Javadoc, @since tags.

Original pull request: #299.
2018-12-07 15:47:11 +01:00
Sebastien Deleuze
9554185a9e DATACMNS-1346 - Add a findByIdOrNull(…) extension to CrudRepository.
In Kotlin, it is idiomatic to deal with return value that could have or not a result with nullable types since they are natively supported by the language. This commit adds CrudRepository.findByIdOrNull(…) variant to CrudRepository#findById that returns T? instead of Optional<T>.

Original pull request: #299.
2018-12-07 15:45:54 +01:00
Oliver Drotbohm
e6213135e2 DATACMNS-1438 - Integration test showing that auditing is working in general. 2018-12-06 10:35:49 +01:00
Oliver Drotbohm
75c9ab0a63 DATACMNS-1430 - Tweaked TypeDiscoverer to consider subtypes of Streamable collection like. 2018-12-04 15:43:54 +01:00
Oliver Drotbohm
549940456b DATACMNS-1436 - Removed explicit addon declaration for Oracle JDK from Travis config. 2018-12-04 14:45:52 +01:00
Oliver Drotbohm
db6e4cc024 DATACMNS-1434 - Removed Javaslang support. 2018-12-04 14:05:24 +01:00
Oliver Drotbohm
a3a5c8e484 DATACMNS-1433 - Added additional Streamable.and(…) flavors for convenience.
Removed superfluous Streamable creation from DefaultImplementationlookupConfiguration.
2018-12-04 12:46:06 +01:00
Oliver Drotbohm
9b39f51635 DATACMNS-1432 - Added Streamable.toList() and ….toSet() for convenience. 2018-12-04 12:40:14 +01:00
Oliver Drotbohm
cf1eaff784 DATACMNS-1430 - Support for returning wrapper types of Streamable.
Extended IterableToStreamableConverter in use in QueryExecutionConverters so that it can not only return Streamable instances but also instances of types that have a factory method or constructor taking a Streamable (by making use of the ObjectToObjectConverter in a default ConversionService).
2018-12-04 11:47:56 +01:00
Oliver Drotbohm
840addcdbe DATACMNS-993 - Polishing.
Removed System.out in ShadowingClassLoader.
2018-12-04 11:43:38 +01:00
Mark Paluch
39c6099ef2 DATACMNS-1414 - Updated changelog. 2018-11-27 14:54:01 +01:00
Mark Paluch
2332cef876 DATACMNS-1407 - Updated changelog. 2018-11-27 12:36:43 +01:00
Mark Paluch
cc013129f9 DATACMNS-1408 - Updated changelog. 2018-11-27 11:27:19 +01:00
Mark Paluch
596b0d8177 DATACMNS-1422 - Fall back to reflection-based PropertyAccessor/EntityInstantiator on inaccessible framework types.
We now fall back to reflection-based PropertyAccessor/EntityInstantiator strategies when framework types are not visible by the entity's ClassLoader.

Typically, we use class generation to create and load PropertyAccessor and EntityInstantiator classes to bypass reflection. Generated types are injected into the ClassLoader that has loaded the actual entity. Generated classes implement framework types such as ObjectInstantiator and these interfaces must be visible to the ClassLoader that hosts the generated class. Some arrangements, such as OSGi isolate class repositories so the OSGi class loader cannot load our own types which prevents loading the generated class.

Original pull request: #324.
2018-11-23 15:19:54 +01:00
Oliver Drotbohm
9791bb9354 DATACMNS-1421 - Polishing.
Extracted method filter into dedicated method. Changed method order according to conventions.

Original pull request: #323.
2018-11-19 19:46:03 +01:00
Mark Paluch
5bbb458dc5 DATACMNS-1421 - Lookup most specific wither method for a property.
We now inspect all methods that match the wither method pattern (name, accepting a single argument) to find the most specific method returning the actual entity type.

Previously, we attempted to find a method only considering name and argument properties and not the return type. This lookup strategy could find a method returning the entity super type that isn't assignable to the entity type.

Original pull request: #323.
2018-11-19 19:46:03 +01:00
Oliver Drotbohm
9d16739943 DATACMNS-1419 - Added TypeInformation.isSubtypeOf(…). 2018-11-19 19:21:33 +01:00
Mark Paluch
caaec1b862 DATACMNS-1415 - Use thread-safe caching in SpelAwareProxyProjectionFactory.
We now use ConcurrentHashMap as type instead of HashMap to properly synchronize concurrent updates to missing cache elements.

The previously used HashMap was not thread-safe so concurrent modifications resulted in ConcurrentModificationException.
2018-11-12 16:01:21 +01:00
Mark Paluch
443606bfa8 DATACMNS-1406 - Updated changelog. 2018-10-29 14:30:28 +01:00
Mark Paluch
a7b88acdc5 DATACMNS-1411 - Simplify TravisCI build definition.
Remove superfluous sudo declaration as TravisCI is decommissioning containerized builds.
2018-10-26 10:29:13 +02:00
Mark Paluch
8cea52125d DATACMNS-1403 - Polishing.
Rewrite auditing example to functional use of java.util.Optional.

Original pull request: #321.
2018-10-16 15:12:52 +02:00
heowc
f4f419c016 DATACMNS-1403 - Fixed example source in reference documentation.
Changed to example source for changed specifications.

Original pull request: #321.
2018-10-16 15:12:41 +02:00
Mark Paluch
616ef591d2 DATACMNS-1388 - Updated changelog. 2018-10-15 14:27:34 +02:00
Mark Paluch
a771f38fd2 DATACMNS-1395 - Updated changelog. 2018-10-15 11:37:20 +02:00
Mark Paluch
2c6831948f DATACMNS-1401 - Provide context class on runtime class definition.
We now provide the context class for private MethodHandle lookup in the context of the actual entity class to properly use MethodHandles.defineClass(…) and to avoid illegal access warnings caused by reflective access to the defineClass(…) method on class loaders.

Also, we now use the internal type name without adding the reference type decorator when casting the result of a wither invocation. CHECKCAST allowed on earlier Java runtimes (version 8 and earlier) to use the reference decorator (L…;) around the type name. Java 9 and newer reject this format with a ClassFormatError.

Original pull request: #318.
2018-10-08 13:53:18 +02:00
Oliver Gierke
dfd2781c76 DATACMNS-1396 - Polishing.
Original pull request: #319.
2018-10-08 13:53:18 +02:00
Mark Paluch
7c9d44659b DATACMNS-1396 - Use best-effort caching in CustomConversions and DefaultTypeMapper.
We now apply best-effort caching instead of atomic caching for custom conversions and type mapping. This change is a workaround for a Java 8 bug in ConcurrentHashMap where the computeIfAbsent(…) operation unconditionally locks nodes even when the node is already present.

The workaround is to assume the optimistic case by looking up the key and then falling back to computeIfAbsent if the key is absent.

Before:
TypicalEntityReaderBenchmark.simpleEntityReflectivePropertyAccessWithCustomConversionRegistry  thrpt   10   6487423,969 ±  349449,326  ops/s
DefaultTypeMapperBenchmark.readTyped                                                           thrpt   10  38213392,961 ± 5080789,480  ops/s
DefaultTypeMapperBenchmark.readUntyped                                                         thrpt   10  47565238,929 ±  855200,560  ops/s

After:
TypicalEntityReaderBenchmark.simpleEntityReflectivePropertyAccessWithCustomConversionRegistry  thrpt   10    7361251,834 ±  278530,209  ops/s
DefaultTypeMapperBenchmark.readTyped                                                           thrpt   10  122523380,422 ± 3839365,439  ops/s
DefaultTypeMapperBenchmark.readUntyped                                                         thrpt   10  181767673,793 ± 3549021,260  ops/s

Original pull request: #319.
2018-10-08 13:53:08 +02:00
Mark Paluch
fc4b2d1deb DATACMNS-1402 - Fix invocation of default Kotlin constructor.
We now correctly calculate the number of defaulting masks used to represent constructor arguments. Previously, we've been one off which caused that Kotlin classes with 32/33 parameters weren't able to be instantiated.

We also now reuse KotlinDefaultMask to apply defaulting calculation and removed code duplicates.
2018-10-04 14:38:28 +02:00
Mark Paluch
42ee9448d9 DATACMNS-1400 - Do not consider bridge modifier in Kotlin default-method discovery.
We now no longer consider bridge modifiers when looking up Kotlin default methods. We previously included checks whether a synthetic default method is also a bridge method to take all specifics of synthetic methods into account. With Kotlin 1.3, the compiler no longer sets the bridge flag. This behavior change would previously prevent usage of the copy method with classes compiled with Kotlin 1.3.

Default method discovery is still guesswork and Kotlin compiler reverse engineering as there is no documentation on how to look up this kind of methods.

Further references:
* https://youtrack.jetbrains.net/issue/KT-24415 - Remove bridge flag from default methods.
* https://youtrack.jetbrains.net/issue/KT-27317 - No documented rules for discoverability of generated methods.
2018-10-04 10:59:23 +02:00
Oliver Gierke
3d6e3dbcc0 DATACMNS-1399 - Fixed unit tests after change in exception message.
Original pull request: #313.
2018-10-01 10:29:49 +02:00
Vjkumar Bokar
47283aa47a DATACMNS-1399 - Fixed error message in repository fragment initialization.
Swapped parameters to match the placeholder semantics in the actual error message.

Original pull request: #313.
2018-10-01 10:16:11 +02:00
Mark Paluch
f58a5c8909 DATACMNS-1378 - After release cleanups. 2018-09-21 07:45:28 -04:00
Mark Paluch
dddf8e69d5 DATACMNS-1378 - Prepare next development iteration. 2018-09-21 07:45:26 -04:00
Mark Paluch
c19774f117 DATACMNS-1378 - Release version 2.1 GA (Lovelace). 2018-09-21 07:08:38 -04:00
Mark Paluch
31be97e8c8 DATACMNS-1378 - Prepare 2.1 GA (Lovelace). 2018-09-21 07:07:50 -04:00