Commit Graph

614 Commits

Author SHA1 Message Date
Greg Turnquist
658c9ff0d8 DATAREST-631 - Expose id attributes with JSON Schema metadata if configured.
The JSON Schema we expose now considers the owning type for configuration to expose the identifier. Previously, we erroneously checked the property type.

Original pull request: #190.
2015-07-31 16:09:42 +02:00
Oliver Gierke
a1d6b6db62 DATAREST-630 - Polishing.
Simplified implementation change. Integrated new test case into the existing one. Cleaned up existing test case to always use TestMvcClient.

Original pull request: #189.
2015-07-31 15:03:30 +02:00
Greg Turnquist
1f9dc1a646 DATAREST-630 - ALPS metadata now only exposes identifier property if explicitly configured to.
The ALPS metadata exposed now considers the id exposure configuration to decide whether to skip the identifier property or not.

Original pull request: #189.
2015-07-31 14:55:57 +02:00
Oliver Gierke
22d7b90cc5 DATAREST-628 - After release cleanups. 2015-07-28 16:28:37 +02:00
Spring Buildmaster
90fe5f7007 DATAREST-628 - Prepare next development iteration. 2015-07-28 07:25:01 -07:00
Spring Buildmaster
bd70e6e133 DATAREST-628 - Release version 2.3.2.RELEASE (Fowler SR2). 2015-07-28 07:24:54 -07:00
Oliver Gierke
b6ba6cb794 DATAREST-628 - Prepare 2.3.2.RELEASE (Fowler SR2). 2015-07-28 14:52:49 +02:00
Oliver Gierke
1640e1f68a DATAREST-628 - Updated changelog. 2015-07-28 14:52:47 +02:00
Fabian Trampusch
480bd60a79 DATAREST-619 - Fixed HTTP method mentioned in Javadoc of RepositoryEntityController.patchItemResource(…).
Previously the Javadoc for said method mentioned PUT as the mapped HTTP method while it's actually PATCH.

Original pull request: #188.
2015-07-27 16:05:47 +02:00
Oliver Gierke
436a1fb9b9 DATAREST-605 - Fixed processing of Maps in DomainObjectReader.
We now post-process Map values recursively to make sure they get merged correctly if they're complex objects in turn.

Improved the exception message for invalid payloads for JSON Patch requests to indicate the expected payload as the root Jackson exception does not contain any hints to what's actually expected.
2015-07-22 17:47:12 +02:00
Oliver Gierke
4d8ba0bdae DATAREST-622 - Removed unnecessary wrapping of embeddeds.
We now use a plain collection of EmbeddedWrapper instead of a Resources to avoid the links contained in the Resources to potentially cause issues on rendering.
2015-07-21 11:59:04 +02:00
Oliver Gierke
df164b05cb DATAREST-606 - Polishing.
Moved the accessibility tweak to the EventHandlerMethod's constructor so that the modification only occurs at detection time. Polished unit test.

Original pull request: #187.
2015-07-19 13:13:12 +02:00
Fabian Trampusch
e759fb8421 DATAREST-606 - Allow non-public @RepositoryEventHandler methods.
AnnotatedEventHandlerInvoker now makes sure the method about to be invoked is accessible.

Original pull request: #187.
2015-07-19 13:13:12 +02:00
Oliver Gierke
da5237538f DATAREST-617 - Fixed content negotiation for requests with Accept: application/*+json.
We now tweak the ProducesRequestConditions for repository controllers to implicitly declare a produces clause of application/*+json to make sure the more concrete produces declarations on methods creating the compact representation are only used as fallbacks.
2015-07-19 13:13:07 +02:00
Oliver Gierke
47693ba5b5 DATAREST-377 - UriStringDeserializer now falls back to null in case of an empty or null source.
UriStringDeserializer now explicitly checks the source JSON value to be null or empty and returns null right away. Previously it handed the value to UriTemplate without any further validation which caused assertion errors in case of an empty or null source.

We now also explicitly catch the IllegalArgumentException thrown from the UriTemplate to make sure that any failure creating a URI (usually from piping a JSON object into the serializer where a URI is expected) is rejected with an appropriate error message.
2015-07-13 08:29:24 +02:00
Antoine Vandecreme
4b3d4dce8b DATAREST-539 - Log exception even if it has no message. 2015-07-09 18:56:17 +02:00
Cedric Ziel
8b3c629c8e DATAREST-596 - Add missing letter to MVC configuration import example 2015-07-09 18:51:06 +02:00
Oliver Gierke
0ec87c5e0a DATAREST-582 - Fixed potential double invocation of annotated event handlers.
AnnotatedEventHandlerInvoker now uses the user class to detect handler methods on to make sure we don't accidentally find CGLib generated methods and thus invoke the handler multiple times later on.

Extended MethodFilter Methods.USER_METHODS to filter methods on CGLib proxy classes, too.

Added missing license header and Javadocs where necessary.
2015-07-06 12:30:16 +02:00
Oliver Gierke
c973582228 DATAREST-601 - Updated changelog. 2015-07-01 10:09:38 +02:00
Oliver Gierke
4c73f7d486 DATAREST-602 - Updated changelog. 2015-07-01 10:09:28 +02:00
Oliver Gierke
8786373b14 DATAREST-603 - After release cleanups. 2015-06-30 14:30:44 +02:00
Spring Buildmaster
14a2e9f464 DATAREST-603 - Prepare next development iteration. 2015-06-30 05:17:46 -07:00
Spring Buildmaster
f6142d9400 DATAREST-603 - Release version 2.3.1.RELEASE (Fowler SR1). 2015-06-30 05:17:44 -07:00
Oliver Gierke
a21a1f3fd2 DATAREST-454 - Reverted to usage of plain Strings for HTTP headers.
Spring 4.0.9 does not include the constants for HTTP headers whose usage was introduced in 46b08. Reverted to use the String equivalents.

Original pull request: #184.
2015-06-30 14:11:46 +02:00
Oliver Gierke
96bc074282 DATAREST-603 - Prepare 2.3.1.RELEASE (Fowler SR1). 2015-06-30 13:58:39 +02:00
Oliver Gierke
ed60172878 DATAREST-603 - Updated changelog. 2015-06-30 12:31:51 +02:00
Oliver Gierke
ed9b66c2f9 DATAREST-563 - Updated changelog. 2015-06-30 12:08:23 +02:00
Oliver Gierke
1ebc47dba0 DATAREST-454 - Polishing.
Improved example headers to not expose we're referring to test code. Used inline code instead of bold for technical terms (HTTP methods, HTML attributes etc.).

Original pull request: #184.
2015-06-25 11:47:52 +02:00
Greg Turnquist
46b08b9fe5 DATAREST-454 - Document conditional operations.
Added documentation of ETag and Last-Modified header handling with Spring Data managed domain types.

Original pull request: #184.
2015-06-25 09:54:14 +02:00
Oliver Gierke
4294e9ec9a DATAREST-588 - Tweak ResourceSupportHttpMessageConverter to really reject all non-configured types.
We now override canRead(Type, Class<?>, MediaType) and tweak some of the delegate to reflect the patch in Spring HATEOAS spring-hateoas/#360 but without having to upgrade to the new version.
2015-06-24 17:26:15 +02:00
Oliver Gierke
fcb55865bf DATAREST-577 - Removed obsolete dependency to configuration from RepositoryResourceMappings.
This avoids a cyclic dependency between the configuration and the mappings that caused bootstrap issues.
2015-06-19 12:40:42 +02:00
Oliver Gierke
e6f5d9bbd8 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. Extracted Guava version into property.
2015-06-19 12:37:42 +02:00
Oliver Gierke
1417287b2b 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:06:21 +02:00
Oliver Gierke
3e0402b70b 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:44 +02:00
Greg Turnquist
5f091a68f8 DATAREST-508 - Added details about finding projection definitions.
Original pull request: #176.
2015-06-13 18:01:19 +02:00
Greg Turnquist
0692a90955 DATAREST-576 - Remove old Markdown docs 2015-06-13 17:56:11 +02:00
Greg Turnquist
c97034f7c9 DATAREST-535 - Add documentation about overriding SDR handlers 2015-06-01 14:46:40 +02:00
Greg Turnquist
505d9b4a84 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:34:06 +02:00
Oliver Gierke
a07697ef34 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:38 +02:00
Oliver Gierke
08bb44133a 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:31 +02:00
Greg Turnquist
7e2752ec95 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-05-19 15:11:01 +02:00
Andy Wilkinson
11c8220377 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:21:12 +02:00
Oliver Gierke
aecc0aa26a 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:45 +02:00
Oliver Gierke
f05a6baf11 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:31 +02:00
Oliver Gierke
9cc609af97 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:24 +02:00
Oliver Gierke
bc04809bcf DATAREST-519 - RepositoryEntityLinks now adds existing Pageable and Sort. 2015-04-14 22:23:12 +02:00
Oliver Gierke
28e0ef76d1 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:30:33 +02:00
Oliver Gierke
d70851cda8 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 09:29:33 +02:00
Oliver Gierke
49bad45b5f 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:44:26 +02:00
Oliver Gierke
ba9f1b36ab 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 16:48:42 +02:00