Commit Graph

605 Commits

Author SHA1 Message Date
Oliver Gierke
e4cf6d9f23 DATAREST-584 - Polished dependency setup to mitigate differing dependency versions.
Declare Commons IO explicitly to make sure we use a version matching both Neo4j and Solr. Using guava property from Spring Data Build now.
2015-06-19 12:43:47 +02:00
Oliver Gierke
abd85f9e8a DATAREST-581 - Fixed ETag calculation for projected item resources.
Instead of using the PersistentEntityResource to obtain the ETag we now calculate headers based on the domain object and PersistentEntity upfront. This prevents the failure of trying to read the ETag from a potentially projected proxy.
2015-06-18 19:05:55 +02:00
Oliver Gierke
6831e18cde DATAREST-583 - RepositoryRestMvcConfiguration now forwards Environment and ResourceLoader to AnnotatedTypeScanner. 2015-06-18 17:53:01 +02:00
Oliver Gierke
7bcf34ce15 DATAREST-565 - HalBrowser controller now uses context-relative redirects. 2015-06-16 15:28:56 +02:00
Oliver Gierke
290c1886f0 DATAREST-577 - Excerpt projections are now configured automatically.
Excerpt projections defined in @RepositoryRestResource had to be discoverable (i.e. located in a sub-package of the domain type). RepositoryRestMvcConfiguration now uses an newly introduced constructor of ProjectionDefinitionConfiguration that automatically registers all projects in the given ResourceMappings.
2015-06-16 15:24:31 +02:00
Greg Turnquist
ad75c3cc8e DATAREST-508 - Added details about finding projection definitions.
Original pull request: #176.
2015-06-13 18:06:52 +02:00
Greg Turnquist
3e2b4f1994 DATAREST-576 - Remove old Markdown docs 2015-06-13 18:06:51 +02:00
Oliver Gierke
d90cbb29b3 DATAREST-563 - After release cleanups. 2015-06-02 12:03:28 +02:00
Spring Buildmaster
42fc85afdc DATAREST-563 - Prepare next development iteration. 2015-06-02 01:58:14 -07:00
Spring Buildmaster
0604e7b876 DATAREST-563 - Release version 2.4.0 M1 (Gosling). 2015-06-02 01:58:12 -07:00
Oliver Gierke
471f0c17e5 DATAREST-563 - Prepare 2.4.0.M1 (Gosling M1). 2015-06-02 10:47:05 +02:00
Oliver Gierke
f941b9ee18 DATAREST-563 - Updated changelog. 2015-06-02 08:25:06 +02:00
Greg Turnquist
394319f54b DATAREST-535 - Add documentation about overriding SDR handlers 2015-06-01 14:44:52 +02:00
Greg Turnquist
97952d1a6f DATAREST-550 - Specify more details about excerpts and projections
* Point out that excerpts are ONLY applied to collections.
* How projections can be found via annotation or manually registered
2015-06-01 14:32:17 +02:00
Oliver Gierke
e4277378a0 DATAREST-553 - Polishing.
Removed obsolete logger in RepositoryRestConfiguration. Removed obsolete Commons IO dependency from POM.

Original pull request: #178.
2015-06-01 13:38:34 +02:00
Greg Turnquist
07986acc54 DATAREST-553 - Removed RepositoryRestConfiguration.setBaseUri(…).
Updated existing unit tests to use setBasePath. Added extra assertion to setBasePath to guard against sending in a URI with a protocol.

Original pull request: #178.
2015-06-01 13:38:34 +02:00
Oliver Gierke
018fa22593 DATAREST-556 - Fixed JsonNode handling for PUT/PATCH with a custom field naming strategy.
The preparation of the JsonNode that we map onto the domain object now correctly looks up fields by their mapped names. Previously we accidentally checked the incoming JSON for fields with raw unmapped property names with caused fields invalid detected or not detected if a custom Jackson naming strategy was in place.
2015-05-26 18:03:56 +02:00
Oliver Gierke
d8ebdc3a15 DATAREST-551 - Re-enabled Cassandra integration tests.
Related tickets: DATAREST-532.
2015-05-19 19:14:43 +02:00
Oliver Gierke
f2d8a996bc DATAREST-523 - Re-enabled POST for collection based association resources.
We now support augmenting elements of a collection resource by using POST which previously only worked with PATCH requests. Took the chance to clean up RepositoryPropertyReferenceController by quite a bit and refactor functionality to discover the supported HTTP methods for a PersistentProperty into RootResourceInformation.
2015-05-19 15:36:56 +02:00
Oliver Gierke
a7b672a64a DATAREST-549 - Added @JsonIgnore to RepositorySearchesResource.getDomainType(). 2015-05-18 19:55:26 +02:00
Oliver Gierke
17305f4067 DATAREST-479 - Empty collections now render a dedicated _embedded property.
Instead of rendering an empty _embedded document for empty collections and pages we now explicitly trigger the creations of an EmbeddedWrapper for that empty, collection to preserve the collection's element type.

Tweaked ResourceProcessorHandlerMethodReturnValueHandler to invoke ResourceProcessor instances for those empty collections, too. PRHMRVH now checks the assignability of the raw resource type before analyzing the value type for a match.

RepositorySearchController now adds additional self links for the list of searches and a search execution.
2015-05-18 19:55:23 +02:00
Andy Wilkinson
f1e928a744 DATAREST-538 - Expose Jackson converter beans as being TypeConstrained…Converters.
Previously, RepositoryRestMvcConfiguration exposed its two ResourceSupportHttpMessageConverter beans as MappingJackson2HttpMessageConverters. This made it impossible for Spring Boot support for conditional beans to identify that they were type-constrained and, therefore, were not a suitable replacement for a general-purpose Mapping Jackson2HttpMessageConverter bean.

This commit updates RepositoryRestMvcConfiguration to expose both of its Jackson message converters as TypeConstrinaedMappingJackson2HttpMessageConverter instances. This will also Spring Boot to identify that their converters are type-constrained so that it can continue to auto-configure its general purpose converter. This is important as it allows Boot to provide a converter that honors the user’s configuration rather than Spring MVC’s default converter which does not. See spring-projects/spring-boot#2914 for details.

Original pull request: #174.
2015-05-14 17:20:58 +02:00
Oliver Gierke
ffed3c6d7e DATAREST-537 - Fixed removing array elements in JSON Patch operations.
Before replacing the remove operation with a custom one that nulls out the object, we check whether the JSON Pointer points to an array element. If that's the case we skip the replacement and proceed.
2015-05-09 16:43:34 +02:00
Oliver Gierke
70a248870d DATAREST-531 - JSON Schema now exposes read-only fields.
Properties considered read-only are now explicitly marked as such in the JSON Schema output we render.

Related tickets: DATAREST-530.
2015-05-07 19:19:13 +02:00
Oliver Gierke
6c44a60280 DATAREST-534 - RepositorySchemaController now also matches non-explicit schema requests. 2015-05-07 14:19:45 +02:00
Oliver Gierke
4bc0f0cc4c DATAREST-532 - Temporarily deactivate Cassandra integration tests. 2015-05-06 16:09:11 +02:00
Oliver Gierke
cd82411169 DATAREST-521 - Re-added accidentally dropped existing links.
The LinkCollector introduced in previous commits accidentally dropped links already existing on the Resource.
2015-04-19 13:52:16 +02:00
Oliver Gierke
9bba615d79 DATAREST-522 - Improved exception handling in DelegatingHandlerMapping.
We now also handle HttpRequestMethodNotSupportedException and UnsatisfiedServletRequestParameterException and traverse the chain before eventually rejecting the mapping attempt with the last exception found.

Related tickets: DATAREST-409.
2015-04-17 14:52:05 +02:00
Oliver Gierke
6b910fe06f DATAREST-521 - Removed toString() output from test cases. 2015-04-16 09:25:27 +02:00
Oliver Gierke
bba665cef4 DATAREST-521 - Excerpts now contain all links of the projection target.
Extended the serialization capabilities to explicitly treat projection proxies by wrapping them into a ProjectionResource and collecting links for the target backing the projection if the target is an exported resource.
2015-04-16 09:15:48 +02:00
Oliver Gierke
dd398c8011 DATAREST-519 - RepositoryEntityLinks now adds existing Pageable and Sort. 2015-04-14 22:27:04 +02:00
Oliver Gierke
3537bbd20b DATAREST-518 - MappingResourceMetadata is now not exported by default. 2015-04-14 22:27:02 +02:00
Oliver Gierke
85ced098c6 DATAREST-293 - Added new module to easily add a HAL browser to Spring Data REST apps.
Added a module that repackages the webjar version of the HAL browser. The repackaging is necessary to be able to control the exposure of the browser dynamically and prevent Spring Boot's auto-exposure of webjars from kicking in.

Tweaked BasePathAwareHandlerMapping to default the Accept header to the one defined in the configuration if none is present in the request or */* is given. This will make sure we default to a JSON dialect in case no header is set.
2015-04-14 18:13:02 +02:00
Oliver Gierke
9a77f20bf4 DATAREST-517 - Null query results are now translated into 404.
We now explicitly handle null query execution results by returning 404 Not Found.
2015-04-13 13:34:16 +02:00
Oliver Gierke
47d369608b DATAREST-516 - Fixed link to ALPS representation descriptors of associations.
Previously the link pointing to representation descriptors of associations neither pointed to the ALPS controller nor to the representation descriptor.
2015-04-13 13:27:29 +02:00
Oliver Gierke
7c3b93fffd DATAREST-511 - Support for executing repository methods returning Optionals.
Added an UnwrappingRepositoryInvokerFactory that transparently unwraps JDK 8 and Guava Optionals to make sure the consuming code works with values or plain nulls correctly.
2015-04-13 08:38:44 +02:00
Oliver Gierke
bb933237b0 DATAREST-506 - NotModified responses now return headers, too.
Responses for item resources that result in 304 Not Modifier now also return the headers they'd return if a 200 Ok would've been returned.
2015-04-12 18:18:54 +02:00
Oliver Gierke
72647464c6 DATAREST-515 - RepositorySearchesResource now exposes domain type.
RepositorySearchesResource now exposes the domain type for whom the searches are listed to allow implementations of ResourceProcessor add links by type more easily.
2015-04-11 15:54:14 +02:00
Oliver Gierke
c412bc3a76 DATAREST-514 - Fixed resource exposure for customized associations.
We no correctly handle the customized association path if @RestResource is used on an association. Took the chance to refactor the resource mapping subsystem quite significantly to improve the handling of property mappings. Those had been externalized before.
2015-04-10 16:08:51 +02:00
Oliver Gierke
04871bbd29 DATAREST-509 - Fixed typo in reference docs section on projections. 2015-04-08 18:27:09 +02:00
Oliver Gierke
d30883c0ad DATAREST-507 - Fixed IllegalArgumentException in RepositoryRestExceptionHandler.
A lot of cleanups in RepositoryRestExceptionHandler: prefer static methods where possible. Removed delegates where only one client was calling the method. Consistent argument ordering with optional (nullable) parameters last.

Silenced logging in unit tests for RepositoryRestExceptionHandler.
2015-04-08 17:35:21 +02:00
Oliver Gierke
7d44b1ecab DATAREST-506 - Support for conditional GETs on item resources.
We now inspect If-None-Match and If-Modified-Since headers on GET requests to item resources and return 304 Not Modified if appropriate.

Disable rendering of version property in Jackson serializer as it's reflected in the ETag.

Related tickets: DATAREST-160, DATAREST-471.
2015-04-08 14:41:58 +02:00
Oliver Gierke
1bb228df17 DATAREST-502 - Prepare request parameters to enable URI-to-entity resolution for executing searches.
RepositorySearchController now takes all request parameters as MultiValueMap to execute query methods. For parameters mapping to a managed resource we try to interpret the given parameter value as URI to actually trigger the URI-to-entity resolution through the newly registered UriToEntityConverter.

The latter is now registered with the default ConversionService registered so that it's

A lot of cleanups in RepositorySearchController. Removed some obsolete prints to the console to reduce log output during test execution.

Related ticket: DATACMNS-678.
2015-04-07 17:02:16 +02:00
Greg Turnquist
e741f90378 DATAREST-503 - Fix typo in reference docs
Mispelled word in SDR's reference documentation. Patched.

Courtesy of https://github.com/spring-projects/spring-data-rest/pull/172
2015-04-02 12:52:05 -05:00
Oliver Gierke
2697c6a2fa DATAREST-302 - Rendering projections includes/keeps links.
We now treat embedded projections as Resource instances and equip them with a self link. This should also allow to register ResourceProcessor instances for projection types to even add projection specific links if necessary.

Also removed the explicit removal of the association link in case a projection is rendered for an association.
2015-04-02 16:15:39 +02:00
Oliver Gierke
3b55dceef7 DATAREST-500 - Enable lazy-loading proxy resolution on Hibernate 4 module.
We now explicitly activate the resolution of lazy-loading proxies on Hibernate 4 to make sure not already populated lazy-loading proxies are actively resolved.
2015-03-30 21:31:02 +02:00
Oliver Gierke
a446527da3 DATAREST-498 - IncomingRequest now correctly evaluates parameterized media types.
IncomingRequest.isJsonPatchRequest()/….isJsonMergePatchRequest() previously did a hard equals comparison to the media type discovered in the request. This fails if the request's media type contains parameters (e.g. the charset).

We now rather use MediaType.isCompatibleWith(…) to compare the media types more leniently.

Renamed test case to match conventions so that the Maven build actually executes them.
2015-03-30 10:42:40 +02:00
Oliver Gierke
9d42d30595 DATAREST-493 - After release cleanups. 2015-03-23 14:02:45 +01:00
Spring Buildmaster
829bbdd221 DATAREST-493 - Prepare next development iteration. 2015-03-23 05:36:59 -07:00
Spring Buildmaster
338047fd62 DATAREST-493 - Release version 2.3.0.RELEASE (Fowler GA). 2015-03-23 05:36:57 -07:00