Commit Graph

622 Commits

Author SHA1 Message Date
Oliver Drotbohm
dc10166679 DATAREST-1304 - EntityLookupConfiguration is now used in PUT for creation.
Previously the backend identifier derived from the URI was set as identifier on the object to be created in a PUT request. However, in case a custom entity lookup is used, this is not the identifier but an arbitrary property pointed to through user defined code, mostly a method reference.

We now use the newly introduced MethodInvocationRecorder API in Spring Data Commons to be able to obtain the property that is supposed to be used and set that to the value calculated. This requires the entity type for which the custom lookup is configured to be non-final as the invocation recording is build on top of proxies.

Related tickets: DATACMNS-1449.
2019-03-06 14:34:58 +01:00
Jeroen Reijn
6d0acfd997 DATAREST-1143 - Prefer ResourceNotFoundException over ResponseEntity.notFound().
This is to allow users to plug in custom exception handling to control these situations.

Original pull request: #284.
2019-03-05 15:46:05 +01:00
Oliver Drotbohm
017b69c4e1 DATAREST-1338 - JsonPatch handling is now able to traverse maps.
We're now able to correctly identify Map keys within JsonPatch paths so that e.g. people/Dave/name properly translates into a people['Dave'].name SpEL expression.

Streamlined the design of SpelPath to avoid duplicate parsing and properly express the difference between typed and untyped paths in the type hierarchy. Slightly refactored the type hierarchy so that only methods that make sense in either untyped or typed state appear on the instance returned (getLeafType(Class) was exposed on TypedSpelPath before, which was confusing).
2019-03-05 13:54:58 +01:00
Oliver Drotbohm
d714d10675 DATAREST-1341 - Upgrade to latest API changes in Spring HATEOAS. 2019-03-04 11:42:58 +01:00
Oliver Drotbohm
1bf08180db DATAREST-1341 - Adapt to package refactorings in Spring HATEOAS. 2019-02-27 20:31:59 +01:00
Oliver Drotbohm
85694576b2 DATAREST-1341 - Adapt RepositoryLinkBuilder to API changes in Spring HATEOAS.
Removed obsolete BaseUriLinkBuilder as well.
2019-02-22 18:33:50 +01:00
Oliver Drotbohm
554d6cb27b DATAREST-1341 - Further API adaption for Spring HATEOAS 1.0. 2019-02-15 11:10:59 +01:00
Oliver Drotbohm
93b8e68bbf DATAREST-1341 - Move off of Java8PluginRegistry in favor of Spring Plugin's update one. 2019-02-07 20:55:42 +01:00
Greg Turnquist
af6f55a92c DATAREST-1341 - Upgrade to Spring HATEOAS 1.0. 2019-02-07 20:55:42 +01:00
Oliver Drotbohm
a05d6a2a90 DATAREST-1332 - Polishing. 2019-02-07 20:55:42 +01:00
Oliver Drotbohm
e4c1625447 DATAREST-1332 - Fixed regression in CORS request handling.
The lookup of the RequestMappingInfo in exposeEffectiveLookupPathKey(…) yields null for CORS preflight requests to resources that do not support OPTIONAL explicitly. We now guard against that to avoid a subsequent NullPointerException.
2019-02-07 20:55:42 +01:00
Oliver Drotbohm
fa9b31c9af DATAREST-1321 - Lookup types can now produce non-String reference values.
Previously we assumed lookup types to always result in String based values. We now loosen that constraint to also allow other scalar types, mostly targeting numeric types like long and integer.
2019-01-08 11:47:45 +01:00
Mark Paluch
68bfd55982 DATAREST-1330 - Update copyright years to 2019. 2019-01-08 11:47:37 +01:00
Oliver Drotbohm
13370f8e2f DATAREST-1322 - Fix proxy detection for Hibernate 5+ compatibility.
Switched to Spring Data Commons' ProxyUtils for a proxy detection mechanism that supports Hibernate 5 proxies.
2018-12-20 17:16:49 +01:00
Christoph Strobl
5e9cb5014b DATAREST-1316 - Prepare next development iteration. 2018-12-11 11:07:51 +01:00
Christoph Strobl
0c026dc3d3 DATAREST-1316 - Release version 3.2 M1 (Moore). 2018-12-11 10:53:53 +01:00
Oliver Gierke
33c156dae0 DATAREST-1294 - Polishing.
Aligned with general request attribute naming conventions and prefixed the one we now use with the class' name. Altered the local attribute name to EFFECTIVE_REPOSITORY_RESOURCE_LOOKUP_PATH.

Renamed the constant holding the name from …_KEY to …_ATTRIBUTE.
2018-10-18 15:58:31 +02:00
Oliver Gierke
3f0eb17dcf DATAREST-1294 - Expose effective repository lookup path as request attribute.
We now expose a partially resolved PathPattern to contain the explicit repository base path so that the subpaths can be grouped around the individual repositories exposed.

Related ticket: spring-projects/spring-boot#14872
2018-10-18 12:17:12 +02:00
Mark Paluch
b0c0a70ff0 DATAREST-1277 - Prepare next development iteration. 2018-09-21 07:45:27 -04:00
Mark Paluch
e96904414b DATAREST-1277 - Release version 3.1 GA (Lovelace). 2018-09-21 07:08:39 -04:00
Oliver Gierke
d243be79da DATAREST-1267 - Prepare next development iteration. 2018-08-20 10:56:52 +02:00
Oliver Gierke
b2da264bea DATAREST-1267 - Release version 3.1 RC2 (Lovelace). 2018-08-20 10:40:11 +02:00
Oliver Gierke
88b73de3b7 DATAREST-1274 - JsonPatch paths now properly verify multi-digit indexes. 2018-08-08 08:44:43 +02:00
Oliver Gierke
5635479dd1 DATAREST-1248 - SortTranslator now considers read-only properties sortable.
MappedProperties now exposes a factory method that uses the Jackson introspector for serialization (instead of deserialization) which now also includes read-only properties. Previously, read-only ones were not considered as they are excluded from the metadata if it is looked up for deserialization.
2018-08-07 15:43:50 +02:00
Oliver Gierke
501ddda59f DATAREST-1273 - Properly support adding to collections via indexes in JsonPatch expressions.
We now support adding a to a collection via JsonPatch expressions by using the collection's size as target index. Contrary to paths pointing to existing collection elements we cannot determine the type of the object to be created. Thus, we fall back to the common element type of all existing collection elements. We also reject indexes pointing to elements with an index greater than the current collection's size.
2018-08-07 10:47:41 +02:00
Mark Paluch
fd5cb8342a DATAREST-1245 - Prepare next development iteration. 2018-07-26 12:32:25 +02:00
Mark Paluch
a9aeb856fd DATAREST-1245 - Release version 3.1 RC1 (Lovelace). 2018-07-26 12:06:35 +02:00
Oliver Gierke
429706a77e DATAREST-1260 - Tweaked DomainObjectReader to support immutable entities.
DomainObjectReader now aborts the recursive merges in case it encounters an entity that's described as @Immutable (just introduced in Spring Data Commons).

Fixed some generics and removed DomainObjectMerger as it's unused.

Related ticket: DATACMNS-1322.
2018-07-12 10:30:54 +02:00
Oliver Gierke
c644eb979f DATAREST-1259 - Removed obsolete bean definition for HttpRequestHandlerAdapter. 2018-07-10 12:33:28 +02:00
Florian Lüdiger
10dedaefa3 DATAREST-810 - Fix minor typo in Javadoc.
Original pull request: #295.
2018-07-04 16:34:58 +02:00
Oliver Gierke
6ee2b1374a DATAREST-1256 - Upgraded to Spring HATEOAS 0.25.0.BUILD-SNAPSHOT.
Adapted RepositoryRestMvcConfiguration to now create a shared fallback ObjectMapper and avoid to register it as Spring Bean. Adapted test cases that previously were relying on such a bean being present.

Adapted test cases to verify on the correct ALPS document structure (see spring-projects/spring-hateoas#665).
2018-06-20 20:01:57 +02:00
Oliver Gierke
9f3443cde9 DATAREST-1251 - PersistentEntityProjector now uses lambdas instead of anonymous inner classes. 2018-06-13 14:44:10 +02:00
Oliver Gierke
7323b950b6 DATAREST-1198 - Polishing.
Fixed @since tag in new converter implementation as we're going to backport the fix to Kay. Simplified converter setup in RepositoryRestMvcConfiguration to expose less API until someone actually requests access.

Original pull request: #290.
2018-06-13 10:14:44 +02:00
Mark Paluch
65ad7cd3e1 DATAREST-1198 - Add Converter to convert String to javax.naming.ldap.LdapName.
We now provide and configure a converter for String to LdapName conversion so Spring Data LDAP can be used with Spring Data REST without further configuration.

Original pull request: #290.
2018-06-13 10:14:44 +02:00
Oliver Gierke
843540b746 DATAREST-1250 - Polishing.
Added unit test to verify new behavior and prevent regressions. Fixed author capitalization.
2018-06-05 10:11:37 +02:00
tigger
0cc1f22741 DATAREST-296 - ResourceMetadataHandlerMethodArgumentResolver now properly implements ….supports(…).
ResourceMetadataHandlerMethodArgumentResolver.supports(…) now properly checks for ResourceMetadata. It previously checked for RepositoryInformation which is probably a left-over from a previous state of the codebase and has been unnoticed so far as the class is only used as a direct dependency of other HandlerMethodArgumentResolvers.
2018-06-05 10:04:08 +02:00
Oliver Gierke
17c8c7ee2c DATAREST-1249 - Polishing. 2018-05-30 11:04:37 +02:00
Oliver Gierke
b61cb9ab28 DATAREST-1249 - DomainObjectMerger now properly binds to uninitialized target collections. 2018-05-30 10:40:34 +02:00
Oliver Gierke
a1454058d9 DATAREST-948 - Introduced ExposureConfiguration to allow customizing the exposure of HTTP methods of repositories.
ExposureConfiguration exposes methods to register AggregateResourceHttpMethodsFilter and AssociationResourceHttpMethodsFilter (both applied by type or globally) to customize the supported HTTP methods by collection, item and association resources. It also provides shortcuts for common use cases like disabling PUT for item resources etc.
2018-05-30 10:40:28 +02:00
Christoph Strobl
769a48d073 DATAREST-1230 - Prepare next development iteration. 2018-05-17 10:09:34 +02:00
Christoph Strobl
108d9106b8 DATAREST-1230 - Release version 3.1 M3 (Lovelace). 2018-05-17 09:51:42 +02:00
Mark Paluch
6a968d0f9c DATAREST-1196 - Prepare next development iteration. 2018-04-13 15:08:32 +02:00
Mark Paluch
c2327c4ff2 DATAREST-1196 - Release version 3.1 M2 (Lovelace). 2018-04-13 14:30:58 +02:00
Oliver Gierke
7eaf50d997 DATAREST-1222 - Switched to SimpleEvaluationContext for SpEL-based PATCH handling. 2018-03-28 09:56:50 +02:00
Oliver Gierke
75109533c9 DATAREST-1219 - Removed explicit declaration of Jackson library versions. 2018-03-27 19:53:57 +02:00
Oliver Gierke
80e25ce522 DATAREST-1215 - Added project.root configuration to make JavaDoc generation work again.
Related ticket: https://github.com/spring-projects/spring-data-build/issues/527.
2018-03-14 10:04:23 +01:00
Oliver Gierke
e79b73664a DATAREST-1212 - Deprecated RepositoryRestConfigurerAdapter.
We now recommend to implement RepositoryRestConfigurer directly as its declared methods are now default methods. We also introduced a static factory method to easily create a configurer to customize RepositoryRestConfiguration via a Lambda expression.

Moved test case setups that use that deprecated API to the new one.
2018-03-12 13:21:14 +01:00
Oliver Gierke
622cf07720 DATAREST-1193 - DelegatingHandlerMapping is now a MatchableHandlerMapping.
DelegatingHandlerMapping now implements MatchableHandlerMapping by selecting the a delegate based on the already implemented algorithm and then invoking the ….match(…) method in case the selected one is a MatchableHandlerMapping in turn.

Refactored the internals a bit to be able to reuse the selection algorithm from both ….getHandler(…) and ….match(…).
2018-02-19 18:04:25 +01:00
Christoph Strobl
1fcfe12168 DATAREST-1141 - Prepare next development iteration. 2018-02-06 10:11:15 +01:00
Christoph Strobl
cd594d5c46 DATAREST-1141 - Release version 3.1 M1 (Lovelace). 2018-02-06 09:47:10 +01:00