Commit Graph

839 Commits

Author SHA1 Message Date
Christoph Strobl
4da2ea3e1d Release version 4.0 M4 (2022.0.0).
See #2128
2022-05-13 10:43:59 +02:00
Oliver Drotbohm
adcd7e74ef Fix PUT merge handling for polymorphic properties.
We now replace the original value of polymorphic properties with the newly deserialized one if the type of the new one is different from the old one. We still copy all JSON ignored properties to the new instance to make sure that non-exposed, server-side state is retained. We apply the same handling for explicitly immutable source and/or target types.

Fixes #2130.
2022-04-04 14:53:15 +02:00
Oliver Drotbohm
ed822390d8 Fix potential NullPointerException in HalFormsAdaptingResponseBodyAdvice.
Fixes #2123.
2022-03-28 16:50:34 +02:00
Mark Paluch
27a7f0d50e Prepare next development iteration.
See #2127
2022-03-22 14:07:36 +01:00
Mark Paluch
bd4230c0b7 Release version 4.0 M3 (2022.0.0).
See #2127
2022-03-22 14:00:23 +01:00
Mark Paluch
fc8885a09c Prepare next development iteration.
See #2100
2022-03-21 16:44:39 +01:00
Mark Paluch
fd01f85d92 Release version 4.0 M2 (2022.0.0).
See #2100
2022-03-21 16:35:08 +01:00
Oliver Drotbohm
b7d6b2b78c Update copyright years to 2022. 2022-02-07 10:26:46 +01:00
Mark Paluch
44cbabe1ac Prepare next development iteration.
See #2096
2022-01-14 14:43:20 +01:00
Mark Paluch
2a594d0d57 Release version 4.0 M1 (2022.0.0).
See #2096
2022-01-14 14:35:11 +01:00
Jens Schauder
ee317f1b91 Remove Eclipse Non-Javadoc comments.
Closes #2093
2022-01-05 13:40:05 +01:00
Oliver Drotbohm
e912907ec0 Adapt to changes in Spring Framework's HttpMethod. 2021-11-30 18:56:54 +01:00
Oliver Drotbohm
0efd1502d0 Further steps towards JakartaEE.
Remove temporary version placeholders and obsolete version declarations for modules we do not test against anymore.

Tweaked the JPA integration and the Jackson Hibernate 5 one in particular to work with the new Jakarta variants. Re-enabled JPA tests. Removed support for Jackson Hibernate 4 integration and JodaTime.
2021-11-30 18:56:54 +01:00
Oliver Drotbohm
ede294967f Upgrade to Spring Framework 6. 2021-11-30 18:56:53 +01:00
Oliver Drotbohm
3966ce83e5 Prepare 4.0 development.
Fixes #2068.
2021-11-30 18:56:50 +01:00
Jens Schauder
87b2601b27 Prepare next development iteration.
See #2079
2021-11-12 10:59:42 +01:00
Jens Schauder
e31c9d49bf Release version 3.6 GA (2021.1.0).
See #2079
2021-11-12 10:49:37 +01:00
Oliver Drotbohm
a40aec5deb Consider @CrossOrigin(originPatterns = …).
RepositoryRestHandlerMapping's RepositoryCorsConfigurationAccessor now also evaluates @CrossOrigin's originPatterns into the CorsConfiguration.

Fixes #2077.
2021-10-19 10:32:48 +02:00
Mark Paluch
f556973a6c Prepare next development iteration.
See #2066
2021-10-18 13:55:39 +02:00
Mark Paluch
cecc161fe6 Release version 3.6 RC1 (2021.1.0).
See #2066
2021-10-18 13:48:15 +02:00
Patrik Mihalcin
358bd3578a Fix typo in RepositoryRestController's JavaDoc
Fixes #2061.
2021-10-13 16:02:18 +02:00
Oliver Drotbohm
4434d32fae Prevent using NestedEntitySerializer if target serializer does not support unwrapping.
We now verify that the serializer registered for the type that's supposed to be handled by the NestedEntitySerializer actually supports unwrapping as the serialization in EntityModel (MapSuppressingUnwrappingSerializer) requires that to work properly.

Fixes #2056.
2021-10-13 11:59:53 +02:00
Oliver Drotbohm
1828a6a2a7 Switch to JUnit 5.
Issue #2075.
2021-10-12 22:29:45 +02:00
Oliver Drotbohm
18b39cb321 Reduce general runtime exception logging to debug.
Issue #2074.
2021-10-12 16:21:12 +02:00
Oliver Drotbohm
46dc6e03fc Prevent duplicate controller registrations through class-level @RequestMapping.
When we detected @BasePathAwareController and @RepositoryRestController instances, we now reject types that use @RequestMapping on the class level as doing so causes an inevitable registration of the controller with Spring MVC.

Fixes #1342, #1628, #1686, #1946.
2021-10-06 12:13:37 +02:00
Oliver Drotbohm
c6b77e3dd9 Polish Javadoc to prepare builds with JDK 17.
Issue #2068.
2021-09-21 16:36:26 +02:00
Mark Paluch
0cb5c3289f Prepare next development iteration.
See #2052
2021-09-17 09:52:19 +02:00
Mark Paluch
907b15e83b Release version 3.6 M3 (2021.1.0).
See #2052
2021-09-17 09:44:58 +02:00
Oliver Drotbohm
1dae476040 Adapt Content-Type header for HAL FORMS requests based on affordances.
Whenever HAL FORMS is supposed to be rendered, we now adapt the `Content-Type` header depending on whether affordances (and thus `_templates`) are present. If none can be found, we either adapt the header to either `application/hal+json` or even `application/json` depending on the `Accept` header arrangement given. If none match, we reject the request with `406 Not Acceptable`.

Had to reintroduce a dependency on Lombok to use @SneakyThrows as otherwise we cannot throw HttpMediaTypeNotAcceptableException from a ResponseBodyAdvice. A manual implementation of the pattern does not compile on Java 8 (at least on MacOS).

Fixes #2060.
2021-09-14 22:49:05 +02:00
Oliver Drotbohm
2aca2b24e0 Avoid reflection in RepositoryRestMvcConfiguration.
We now completely avoid reflection in RepositoryRestMvcConfiguration by delaying all bean lookups that were previously declared through autowired fields.

Fixes #2057.
2021-08-26 15:38:47 +02:00
Oliver Drotbohm
9cd9e1cef9 Avoid eager reference to BackendIdConverter beans.
Switched to bean method parameter reference to all BackendIdConverter instances.

Fixes #2055.
2021-08-19 23:19:08 +02:00
Jens Schauder
4f9ccaac0e Prepare next development iteration.
See #2046
2021-08-12 15:16:22 +02:00
Jens Schauder
f8bdb374ea Release version 3.6 M2 (2021.1.0).
See #2046
2021-08-12 15:03:18 +02:00
Jens Schauder
5e08842c1b Prepare next development iteration.
See #2001
2021-07-16 14:19:56 +02:00
Jens Schauder
8d0e00be94 Release version 3.6 M1 (2021.1.0).
See #2001
2021-07-16 14:09:26 +02:00
Oliver Drotbohm
8a1d147009 Remove 3.x deprecations.
Removed all deprecations that have accumulated in the 3.x timeline so far.
2021-07-15 08:20:11 +02:00
Oliver Drotbohm
161a3a9499 Allow customization of LinkCollector.
LinkCollector is now an interface. The actual implementation has been moved to DefaultLinkCollector. RepositoryRestConfigurer now has a customizeLinkCollector(…) callback method to tweak or even completely replace the LinkCollector instance.

Fixes #2042.
2021-07-15 08:15:20 +02:00
Oliver Drotbohm
0c24113484 Dedicated customization callback for AuditableBeanWrapperFactory.
Introduced RepositoryRestConfigurer.customizeAuditableBeanWrapperFactory(…) so that implementations can customize the default instance provided by RepositoryRestMvcConfiguration.

Fixes #2040.
2021-07-14 19:01:11 +02:00
Oliver Drotbohm
e1dd82c927 Prevent NullPointerException in AggregateReferenceDeserializerModifier.
In AggregateReferenceDeserializerModifier we now look up the original property name on the Jackson metadata before trying to resolve the property target type. We also explicitly guard against null values returned from that lookup and opt out of the customization in those cases.
2021-07-13 09:25:57 +02:00
Oliver Drotbohm
e2f8d2f2c4 Avoid using Guava's Charset.
Replaced with Java's StandardCharset. Fixes #2026.
2021-06-17 21:16:14 +02:00
Greg L. Turnquist
bc5478ec49 Drop explicit dependency on JSON Path.
Let Spring HATEOAS bring in this dependency.

See #2018.
2021-06-03 12:11:21 -05:00
Oliver Drotbohm
0a0d410800 DelegatingHandlerMapping now fully implements MatchingHandlerMapping correctly.
We now also implement MatchableHandlerMapping.getPatternParser() to expose the PathPatternParser we use. This is needed to detect that DelegatingHandlerMapping uses a PathPatternParser from the outside as the Spring MVC request processing pipeline treats those HandlerMappings in a special way. This is especially important in the context of spring-projects/spring-framework#26814 as that makes the HM implementations work properly in CORS preflight requests.

When used with Spring Security in place, CORS preflight requests are inspected through the HandlerMappingIntrospector, that looks up the CORS configuration for the handler to serve the actual request. That lookup previously failed as Spring MVC was unable to detect that Spring Data REST's DelegatingHandlerMapping works with a PathPatternParser and didn't properly set up the processing pipeline to eventually end up in an invalid state, produce an exception that caused the handler method lookup to fail and cause Spring Security to fail with a 403, claiming the request was invalid.

Fixes #2007.
2021-05-07 22:12:57 +02:00
Mark Paluch
0a31ef1d84 Prepare next development iteration.
See #1992
2021-04-14 14:30:12 +02:00
Mark Paluch
8a690929f0 Release version 3.5 GA (2021.0.0).
See #1992
2021-04-14 14:18:49 +02:00
Oliver Drotbohm
6c007487c7 RepositoryRestConfigurer are again used in declared order.
4b36f79 introduced a regression by consuming registered RepositoryRestConfigurer instances via ApplicationContext.getBeansOfType(…).values() which, unlike the previous consumption via a List<RRC> in an @Bean method, is losing the declared order of the RRC instances as ….getBeansOfType() is a Map.

We now rather use an ObjectProvider and its ….orderedStream() method to consume the registered instances ordered properly.

Fixes #1995.
2021-04-09 12:42:24 +02:00
Oliver Drotbohm
b4b8fdfee0 Support aggregate reference resolution for DTOs.
Introduce AggregateReferenceResolvingModule to be registered with the default ObjectMapper instance that will allow to materialize aggregate instances from URIs for incoming web requests. We do not apply this for aggregate roots themselves as they're already handled by the AssociationUriResolvingDeserializerModifier.
2021-04-07 20:07:54 +02:00
Oliver Drotbohm
21ed68262f Properly handle associations in nested entities.
Nested entities that contain a reference to an aggregate root get a link to that attached to their representation. Previously, the creation of those links assumed that the reference is a materialized instance of the remote aggregate. That's now altered to be able to deal with associations, use identifiers directly or materialize to an intermediate aggregate instance to potentially use a custom lookup.
2021-04-07 20:07:53 +02:00
Mark Paluch
8e42a2a221 Prepare next development iteration.
See #1976
2021-03-31 17:24:04 +02:00
Mark Paluch
d77e5192d8 Release version 3.5 RC1 (2021.0.0).
See #1976
2021-03-31 17:05:09 +02:00
Oliver Drotbohm
9f8071a0d7 Remove legacy support for well-known XML configuration file import.
We now don't import XML configuration located in classpath*:META-INF/spring-data-rest/**/*.xml anymore. This is primarily to not trigger the XML subsystem in Spring Framework which we don't need at all actually. Users still relying on that import can just declare the import themselves.
2021-03-26 13:54:13 +01:00