Commit Graph

1641 Commits

Author SHA1 Message Date
Mark Paluch
b436662304 DATAREST-906 - Consider default Pageable even if Sort is empty.
We now resolve default configured Pageable without dropping them if their Sort is empty. Previously, any default Pageable was dropped if its Sort was empty which caused null being handed to controller methods of @RepositoryRestController instances.

Original pull request: #231.
2016-09-23 15:20:56 +02:00
Oliver Gierke
8492063779 DATAREST-901 - Updated changelog. 2016-09-21 08:08:43 +02:00
Oliver Gierke
bd2d3907a6 DATAREST-842 - Updated changelog. 2016-09-21 08:08:41 +02:00
Oliver Trosien
d6caac122e DATAREST-898 - Fix typo in EntityLookupConfiguration assertion message.
Original pull request: #228.
2016-09-19 15:40:56 +02:00
Jens von Pilgrim
7d0c3d1476 DATAREST-859 - Fix links to included code in conditionals reference documentation.
Original pull request: #217.
2016-09-19 15:40:34 +02:00
Craig Dennis
3d9ed01d3f DATAREST-858 - Fix links to included code in security reference documentation.
Original pull request: #212.
2016-09-19 15:40:20 +02:00
Oliver Gierke
90f57bd1e7 DATAREST-872 - Polishing.
Simplified types used for testing. Removed unnecessary repository interface.

Related pull request: #221.
2016-09-19 10:28:12 +02:00
Alex Leigh
c36267a447 DATAREST-872 - PersistentEntityJackson2Module now serializes JsonTypeInfo correctly.
NestedEntitySerializer now overrides serializeWithType(…) so that @JsonTypeInfo is rendered properly.

Related pull request: #221.
2016-09-19 10:28:09 +02:00
Oliver Gierke
216e267fce DATAREST-883 - Polishing.
Switched to use @RequiredArgsConstructor where possible. Slightly rearranged test cases. Inlined JacksonMappingAwareSortTranslator to not expose it as bean unless necessary. Use static Jackson BeanClassIntrospector to avoid unnecessary recreation.

Original pull request: #222.
2016-09-19 08:05:45 +02:00
Mark Paluch
a999bd3ca8 DATAREST-883 - Consider Jackson field names in Sort mapping.
We now consider Jackson field names when resolving Sort arguments. Domain model properties annotated with @JsonProperty("sales") can be specified by their Jackson-mapped field name in sort arguments. Field names are mapped to their according persistent property names to be used in repository query method sorting. Unknown field names are silently dropped.

Original pull request: #222.
2016-09-19 08:05:45 +02:00
Oliver Gierke
bacd8be4fc DATAREST-897 - Switched to use approximated Map in NestedEntitySerializer.
We now use CollectionFactory.createApproximateMap(…) to avoid picking up persistence technology specific Map implementations that might cause issues (e.g. requiring a Session in the case of Hibernate).

Related tickets: DATAREST-864.
2016-09-19 07:09:04 +02:00
Oliver Gierke
254c4515e1 DATAREST-864 - NestedEntitySerializer now handles Maps correctly.
Previously, NestedEntitySerializer failed to handle Maps correctly as the logic to convert the found values to nested resources tried to handle the values as is, not explicitly looking at the values instead.

We now use an explicit code path to turn the values into resources so that links pointing to other resources are rendered correctly.

Original pull request: #219.
2016-09-16 16:34:06 +02:00
Oliver Gierke
1c70b9175d DATAREST-889 - Polishing.
Improved test cases by using JUnit's ExpectedException for simpler assertions.

Original pull request: #227.
2016-09-14 10:16:22 +02:00
Oliver Trosien
48125faea3 DATAREST-889 - JsonPatchPatchConverter explicitly rejects unknown paths and values.
JsonPatchPatchConverter now explicitly rejects problematic JSON Patch payloads (e.g. incorrect paths, incorrect values) throwing a PatchException.

Original pull request: #227.
2016-09-12 16:08:32 +02:00
Oliver Gierke
1513482b9c DATAREST-885 - Polishing.
Original pull request: #226.
2016-09-12 13:00:48 +02:00
Oliver Trosien
1fd9a03c68 DATAREST-885 - Support array values in JsonPatchPatchConverter.
Original pull request: #226.
2016-09-12 13:00:02 +02:00
Oliver Gierke
2710b988b5 DATAREST-885, DATAREST-885 - Cleanups in JSON Patch code. 2016-09-12 11:20:49 +02:00
Oliver Gierke
2493d3c2f1 DATAREST-885 - Polishing.
Formatting. Copyright ranges.
2016-09-12 11:02:15 +02:00
Mathias Düsterhöft
518cab040f DATAREST-885 - PatchOperation now evaluates SpEL expression.
Original pull request: #223.
2016-09-12 11:01:48 +02:00
Oliver Gierke
3643e06b1f DATAREST-887 - Polishing.
Code formatting. Author tags. Assertions in Constructor. JavaDoc.

Original pull request: #224.
2016-09-12 10:47:50 +02:00
Mathias Düsterhöft
0a6dcc9825 DATAREST-887 - JsonPatchPatchHandler now uses external ObjectMapper.
The previously static ObjectMapper used by JsonPatchPatchHandler now has to be provided by clients instantiating the handler.

Original pull request: #224.
2016-09-12 10:47:13 +02:00
Oliver Gierke
31c894e880 DATAREST-607 - Register Jackson Hibernate 5 module automatically if present.
Just as we do for the Jackson Hibernate integration for Hibernate 4, we now register the module for Hibernate 5 as well.
2016-09-09 23:04:03 +02:00
Oliver Gierke
360ed8a9b2 DATAREST-892 - Fixed integration tests checking for HTTP Content-Type headers.
Spring 4.3 returns Content-Type headers including the character encoding. We needed to relax our assertions on the content type headers to only check for compatibility.
2016-09-09 22:53:42 +02:00
Oliver Gierke
4cb0632518 DATAREST-880 - Prevent nested-entity-as-resource handling for unwrapped properties.
We now exclude properties that are marked as to be unwrapped from getting the nested-entity-as-resource behavour applied as it doesn't make any sense.
2016-08-29 19:26:07 +02:00
Oliver Gierke
72e4ef025d DATAREST-837 - DomainObjectMerger doesn't nullify read-only properties on PUT.
PUT requests are supposed to replace the state of the resource with the request payload. However, Spring Data REST already handles a couple of domain object propoerties in a special way as theri values map to dedicated HTTP features: identifiers (URIs), last-modified dates (header) etc.

For users, it might be worthwhile to exclude other properties from being set by applying the payload, like properties that are completely under the control of the server, e.g. creation user and date, last modifying user etc. So far, users didn't have any means to exclude those properties as the handling of PUT requests treated every missing property of the payload as null value.

DomainObjectMerger now checks whether a property is actually writable before applying the implicit null value. The application can be disabled by annotation a property with @ReadOnlyProperty.
2016-08-18 13:07:02 +02:00
Oliver Gierke
b4163e5365 DATAREST-868 - Fixed Jackson core dependency in Solr tests. 2016-08-08 12:47:37 +02:00
Oliver Gierke
8d931ceb59 DATAREST-866 - Avoid premature initialization of RepositoryRestMvcConfiguration.
Previously, RepositoryRestMvcConfiguration declared a BeanPostProcessor instance in a non-static bean factory method. That required Spring to instantiate the configuration class and keeping it in uninitialized state, which could in turn cause issues downstream.

We now use a static method so that the container can obtain the bean instance without having to create an instance of the configuration class and thus deferring its initialization.
2016-08-08 12:08:43 +02:00
Oliver Gierke
344c3ac840 DATAREST-863 - Adapt to changes in Accept header lookup in Spring 4.3.
Spring 4.3's HeaderContentNegotiationStrategy switched from looking up the Accept header via the method returning a single (potentially comma separated) one to the method returning multiple headers in the first place. We now added an override of HttpServletRequestWrapper.getHeaders(…) to out custom adapter defaulting the media type to make sure the defaulting is visible and thus the right handler methods are looked up.

That previously missing caused the DelegatingHandlerMapping selecting the redirect to the HAL browser in case a request to the API root was sent without an accept header as the defaulting of the header to application/hal+json wasn't properly exposed anymore and the redirect to the browser — declaring a produces clause of text/html — was not causing any media type mismatch anymore.
2016-08-04 21:15:19 -07:00
Oliver Gierke
684e0f9aaf DATAREST-803 - After release cleanups. 2016-07-27 14:32:38 +02:00
Oliver Gierke
eb630ef273 DATAREST-803 - Prepare next development iteration. 2016-07-27 14:32:36 +02:00
Oliver Gierke
eaca77051a DATAREST-803 - Release version 2.6 M1 (Ingalls). 2016-07-27 13:52:12 +02:00
Oliver Gierke
ba8dbc1163 DATAREST-803 - Prepare 2.6 M1 (Ingalls). 2016-07-27 13:51:38 +02:00
Oliver Gierke
31bb5834de DATAREST-803 - Updated changelog. 2016-07-27 13:51:34 +02:00
Mark Paluch
4046f3788e DATAREST-856 - Integrate version badge from spring.io.
Add version badge from spring.io.
2016-07-20 09:14:01 +02:00
Oliver Gierke
48441d291a DATAREST-852 - Use property for JSR-303 API version. 2016-07-15 11:33:13 +02:00
Oliver Gierke
0b6a0a0a8d DATAREST-847 - RepositoryEntityCotroller.saveAndReturn(…) now uses save result.
Previously we handed the original entity to the AfterSaveEvent. This should work in most cases but actually repositories are allowed to return a completely different instance so that we now hand over the instance returned by the repository interaction to avoid potentially occurring issues.
2016-07-01 14:44:40 +02:00
Oliver Gierke
cbbf21fcef DATAREST-849 - Remove obsolete reference to ConversionService from RepositoryEntityController. 2016-07-01 14:35:42 +02:00
Oliver Gierke
9d7e63edc0 DATAREST-848 - Upgraded to HAL Browser b7669f1-1. 2016-07-01 14:33:11 +02:00
Oliver Gierke
aa1b1f7843 DATAREST-804 - Updated changelog. 2016-06-15 14:31:49 +02:00
Oliver Gierke
9e5fd30c68 DATAREST-837 - Move to ResourceProcessor invcation infrastructure in Spring HATEOAS.
Deprecated the ResourceProcessor invoking infrastructure in place here in favor of the types moved to Spring HATEOAS. Refactored our codebase to make use of these newly introduced types right away.

Related tickets: spring-projects/spring-hateoas#362.
2016-06-10 21:33:33 +02:00
Oliver Gierke
f21e150692 DATAREST-840 - HalHandlerInstantiator now gets BeanFactory forwarded.
We now forward the AutowireCapableBeanFactory contained in the ApplicationContext to the HalHandlerInstantiator to make sure Jackson components can use dependency injection to access Spring managed beans.

Upgraded to Spring HATEOAS 0.21 snapshots to see the changes necessary in HalHandlerInstantiator.

Related ticket: spring-projects/spring-hateoas#460.
2016-06-09 17:43:36 +02:00
Oliver Gierke
f2f9564882 DATAREST-825 - Fixed exposure of DELETE HTTP method if findOne(…) is not exposed.
Previously our support for the HTTP DELETE method on item resources was requiring a repository's findOne(…) method to be available and exposed. However, the latter might not be desirable as the support of GET and HEAD requests for item resources depends on that.

We now changed that to only checking that a findOne(…) method is declared on the repository as the implementation of RepositoryEntityController.deleteItemResource(…) requires it to be present to be able to trigger the events that intercept deletes for a particular type.
2016-05-18 13:43:17 +02:00
Oliver Gierke
3306b5ce40 DATAREST-815 - Tweaked HalBrowser controller implementation to consider proxied requests.
We now use the APIs in place in Spring MVC to make sure we create proper redirects for requests that carry proxy headers so that the redirect target is still going through the proxy.
2016-04-27 15:33:40 +02:00
Oliver Gierke
127f1a846f DATAREST-801 - Improved nested value handling in ValidationErrors.
We now correctly handle nested values by manually traversing the potentially nested property path, creating a PropertyAccessor for each nesting step considering the property access settings defined in the mapping metadata.
2016-04-14 21:34:37 +02:00
Oliver Gierke
4bec3229b5 DATAREST-809 - Fixed application of explicit projections for excerpts.
A refactoring in the course of the 2.5 development dropped the application of explicit projection in case of excerpts being requested. This particularly applies to collection resources with explicit projection requests which need to get the explicit projection applied over the default excerpt projection potentially registered.

This is now fixed by the explicitly selected projection (if existing) always trumping the excerpt one.
2016-04-14 20:11:44 +02:00
Oliver Gierke
c8abdf0139 DATAREST-805 - ValidationError nor exposes rejected value as is.
Previously ValidationError captured the toString() variant of the rejected value. We now return the rejected value as is.
2016-04-14 20:11:40 +02:00
Oliver Gierke
5f3305dd07 DATAREST-802 - Updated changelog. 2016-04-06 23:14:26 +02:00
Oliver Gierke
05454aaa54 DATAREST-790 - After release cleanups. 2016-04-06 16:37:03 +02:00
Oliver Gierke
e18fe00ea6 DATAREST-790 - Prepare next development iteration. 2016-04-06 16:36:59 +02:00
Oliver Gierke
c49a29a247 DATAREST-790 - Release version 2.5 GA (Hopper). 2016-04-06 16:35:59 +02:00