Commit Graph

777 Commits

Author SHA1 Message Date
Christoph Strobl
c48d389ddd Prepare next development iteration.
See #2085
2022-01-14 10:00:55 +01:00
Christoph Strobl
33045214b5 Release version 3.5.8 (2021.0.8).
See #2085
2022-01-14 09:47:49 +01:00
Jens Schauder
321b701dbd Prepare next development iteration.
See #2079
2021-11-12 10:38:55 +01:00
Jens Schauder
efbf982f5b Release version 3.5.7 (2021.0.7).
See #2079
2021-11-12 10:27:21 +01:00
Oliver Drotbohm
6a6c173503 Consider @CrossOrigin(originPatterns = …).
RepositoryRestHandlerMapping's RepositoryCorsConfigurationAccessor now also evaluates @CrossOrigin's originPatterns into the CorsConfiguration.

Fixes #2077.
2021-10-19 10:33:00 +02:00
Mark Paluch
c9ad97dbe6 Prepare next development iteration.
See #2065
2021-10-18 11:19:42 +02:00
Mark Paluch
67b64d2391 Release version 3.5.6 (2021.0.6).
See #2065
2021-10-18 11:11:46 +02:00
Patrik Mihalcin
25bd6d4ba5 Fix typo in RepositoryRestController's JavaDoc
Fixes #2061.
2021-10-13 16:02:25 +02:00
Oliver Drotbohm
b7fd4fb73b 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:56:43 +02:00
Oliver Drotbohm
5f4e24b912 Switch to JUnit 5.
Issue #2075.
2021-10-12 22:34:01 +02:00
Oliver Drotbohm
3d03b0cbe6 Reduce general runtime exception logging to debug.
Issue #2074.
2021-10-12 16:21:22 +02:00
Oliver Drotbohm
a6de3b18c4 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:35:41 +02:00
Oliver Drotbohm
002174cdc5 Polish Javadoc to prepare builds with JDK 17.
Issue #2068.
2021-09-21 15:30:18 +02:00
Mark Paluch
da8ae156fd Prepare next development iteration.
See #2051
2021-09-17 09:27:36 +02:00
Mark Paluch
20fb7e6c8e Release version 3.5.5 (2021.0.5).
See #2051
2021-09-17 09:18:33 +02:00
Oliver Drotbohm
b9b974b803 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:34:15 +02:00
Oliver Drotbohm
e06ad7282d 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:44:09 +02:00
Oliver Drotbohm
eeee271b36 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, #2054.
2021-08-19 23:31:56 +02:00
Oliver Drotbohm
f2f8775c03 Avoid eager reference to BackendIdConverter beans.
Switched to bean method parameter reference to all BackendIdConverter instances.

Fixes #2055.
2021-08-19 23:19:22 +02:00
Jens Schauder
7302b102aa Prepare next development iteration.
See #2045
2021-08-12 11:37:30 +02:00
Jens Schauder
31d9eacc4a Release version 3.5.4 (2021.0.4).
See #2045
2021-08-12 11:22:50 +02:00
Jens Schauder
1a92af0390 Prepare next development iteration.
See #2031
2021-07-16 11:51:03 +02:00
Jens Schauder
b786ac3219 Release version 3.5.3 (2021.0.3).
See #2031
2021-07-16 11:35:22 +02:00
Oliver Drotbohm
659a502914 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:42:26 +02:00
Mark Paluch
15c53e71de Prepare next development iteration.
See #2012
2021-06-22 16:05:20 +02:00
Mark Paluch
7dbfa65774 Release version 3.5.2 (2021.0.2).
See #2012
2021-06-22 15:52:29 +02:00
Oliver Drotbohm
cb71facead Avoid using Guava's Charset.
Replaced with Java's StandardCharset. Fixes #2026.
2021-06-17 21:15:58 +02:00
Greg L. Turnquist
ef4d2c9057 Drop explicit dependency on JSON Path.
Let Spring HATEOAS bring in this dependency.

See #2018.
2021-06-03 12:14:28 -05:00
Mark Paluch
218ae09905 Prepare next development iteration.
See #1999
2021-05-14 12:34:18 +02:00
Mark Paluch
a5e7aa7011 Release version 3.5.1 (2021.0.1).
See #1999
2021-05-14 12:23:57 +02:00
Mark Paluch
754f3a77b4 Prepare next development iteration.
See #1992
2021-04-14 14:30:38 +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
Oliver Drotbohm
4b36f794dc Avoid RepositoryRestConfigurerDelegate exposed as bean.
Improving the configuration situation for RRCD, whose bean declaration required access to all RepositoryRestConfigurer instances while implementing the interface itself, too.  We now rather hide the creation of that instance in a Lazy as it doesn't need any kind of lifecycle management.
2021-03-26 13:48:38 +01:00
Oliver Drotbohm
17538c65d7 Enable rendering as HAL FORMS.
We're now registering an HttpMessageConverter to render requests for HAL FORMS using the HalFormsConfiguration present in the application.

We're currently not adding any affordances yet. The change solely enables user code to add affordances explicitly, e.g. via RepresentationModelProcessor implementations.

Fixes: #1991.
2021-03-25 18:01:54 +01:00
Mark Paluch
0f93b050ce Prepare next development iteration.
See #1986
2021-03-17 11:30:29 +01:00
Mark Paluch
54696d4d5f Release version 3.5 M5 (2021.0.0).
See #1986
2021-03-17 11:17:50 +01:00
Oliver Drotbohm
65d4d71895 Support for jMolecules Identifier types.
We now properly handle jMolecules Identifier instances by integration with the corresponding Converter implementations provided by the jmolecules-spring integrations library.

Fixes GH-1982.
2021-03-08 20:31:58 +01:00
Oliver Drotbohm
e9bc98a1e9 #1980 - RepositoryEntityLinks now overrides ….linkForItemResource(…). 2021-02-24 17:57:46 +01:00
Christoph Strobl
08ca20422d Prepare next development iteration.
See #1978
2021-02-18 11:35:21 +01:00
Christoph Strobl
d03e364294 Release version 3.5 M4 (2021.0.0).
See #1978
2021-02-18 11:25:13 +01:00
Christoph Strobl
d5d2659a24 Prepare next development iteration.
See #1954
2021-02-17 14:17:48 +01:00
Christoph Strobl
44b93173a7 Release version 3.5 M3 (2021.0.0).
See #1954
2021-02-17 14:00:09 +01:00
Oliver Drotbohm
0295573047 Avoid late registration of PathPatternParser on DelegatingHandlerMapping.
Instead of registering the PathPatternParser on DelegatingHandlerMapping via WebMvcConfigurer.configurePathMatch(…) we now consume the bean exposed in context of the fix for spring-projects/spring-framework#26427.

We also use the newly introduced RequestMappingInfo.mutate() to add our customizations of the produces clause for Spring Data REST's mappings.

Fixes GH-1965.
2021-01-26 22:45:33 +01:00
Oliver Drotbohm
5dc7536c2c Adapt to API changes in HalHandlerInstantiator.
Fixes GH-1964.
2021-01-25 23:37:22 +01:00