Commit Graph

1641 Commits

Author SHA1 Message Date
Jon Brisbin
4fc50526a3 Fixed problem with infinite recursion on entities by adding @JsonBackReference et al 2012-09-27 15:49:11 -05:00
Jon Brisbin
2ddf788350 DATAREST-48 Fix a bug with compact content-type not displaying links properly when executing query methods. 2012-09-13 08:22:57 -05:00
Jon Brisbin
5bc83602f4 Fixing double inclusion of Groovy dependency at latest version. 2012-09-12 10:49:48 -05:00
Jon Brisbin
749218445a Updating source to reflect latest changes in Spring HATEOAS snapshots. 2012-09-12 10:49:17 -05:00
Jon Brisbin
efc38c642d Updating build to latest versions of dependencies. 2012-09-11 08:30:23 -05:00
Jon Brisbin
143ae89c6d DATAREST-47 Skip links property when value is null, not just an empty list. 2012-09-11 08:30:05 -05:00
Jon Brisbin
61de409f90 Merge pull request #37 from dottydingo/master
Fix for deserializing sets of complex objects
2012-09-10 06:21:09 -07:00
Mark Hellkamp
8c24c641b4 Fixed issue with deserializing empty collections and sets. 2012-09-07 15:03:42 -07:00
Mark Hellkamp
16af522def Fixed issue with deserializing collections and sets. 2012-09-07 14:37:34 -07:00
Jon Brisbin
217e840678 Adjusted test for new repositories. 2012-09-06 09:28:36 -05:00
Jon Brisbin
4ece75b625 Tests added looking into #35 2012-09-06 09:27:20 -05:00
Jon Brisbin
079f07b3fe Tweak comment wording. 2012-09-05 14:51:11 -05:00
Jon Brisbin
2c710b5978 DATAREST-44 Fix for situation where EclipseLink throws an exception if no version is present on the entity. 2012-09-05 14:50:31 -05:00
Jon Brisbin
e3dde1a2cd DATAREST-39 Introduced new property on AttributeMetadata to encapsulate the decision of whether or not a property is nullable. Removed references to JPA-specific classes from everything but the JpaAttributeMetadata class. 2012-09-05 08:57:43 -05:00
Jon Brisbin
a2288b7242 DATAREST-41 Slight tweak to fix to ensure that a links property is never specified as anything other than an array on incoming JSON. 2012-09-04 10:34:14 -05:00
Jon Brisbin
ae8d7d9326 DATAREST-41 Fix bug in JSON reading that wasn't advancing JSON parser past the value of "links" on incoming JSON, causing the entity properties to not be read correctly which prevents the update from succeeding correctly. 2012-09-04 10:17:40 -05:00
Jon Brisbin
18616d9c89 DATAREST-45 Using the wrong base URI to build links to the "self" and properties of entities. Needed to add two lines of code to generate a proper self link and use that as the base URI for generating property links. 2012-08-31 09:39:41 -05:00
Jon Brisbin
e4d43278f7 Tweaking representations and return values to get the right nesting of resources. 2012-08-31 09:26:28 -05:00
Jon Brisbin
1fdde3531e DATAREST-43 Using the correct method now. 2012-08-30 10:24:46 -05:00
Jon Brisbin
0f925cc5ff Re-organized how entities are serialized. Broke out the Jackson Module into its own class and incorporated the code from EntityResource.wrap into the serializer so that entities are properly serialized wherever they are encountered. Also implemented a Converter and use the ConversionService to turn an Entity into a Resource. Right now that's done in two separate places since the propertyOfEntity method needs to turn entities into resources as well as the Jackson serializer. Also threw in a fix for DATAREST-43. 2012-08-30 09:38:28 -05:00
Jon Brisbin
40645673bf Integrated Spring HATEOAS. 2012-08-27 15:16:02 -05:00
Jon Brisbin
d95eda8d9c Merge branch 'master' of github.com:SpringSource/spring-data-rest 2012-08-27 12:41:56 -05:00
Oliver Gierke
55fb0e86c1 DATACMNS-40 - Adapted renaming ResourceProcessor.{enrich(…)->process(…)}. 2012-08-27 19:08:50 +02:00
Oliver Gierke
a84f8f66da DATACMNS-40 - Back to ResourceProcessors.
Using ResourceProcessors again now as some kind of middle ground between the two former design ideas. We use a value returning callback now to allow manipulating the ResourceSupport instance in its entirety. This enables implementations to be either mutable or immutable. The ResourceProcessor interface is a little less flexible than in the first iteration as we require the same type to be returned.
2012-08-24 21:57:42 +02:00
Jon Brisbin
d8d218c658 Merge branch 'master' of github.com:SpringSource/spring-data-rest 2012-08-23 09:59:25 -05:00
Oliver Gierke
7fdeefec52 DATAREST-40 - Added copy constructor to ease setup of HandlerAdapter.
ResourceEnricherInvokingHandlerAdapter now has a copy constructor to
allow setting it up from a default RequestMappingHandlerAdapter. The
reason we introduce this is that WebMvcConfigurationSupport unfortunately
does not allow customizing the handler adapter class to be used as its
instantiations is buried in a method with more setup code. With the copy
constructor introduced one can simply take the configured instance
WebMvcConfigurationSupport provides and pipe it into the custom
ResourceEnricherInvokingHandlerAdapter.
2012-08-23 12:35:45 +02:00
Oliver Gierke
e3049fe9fb DATAREST-40 - Moved to ResourceEnricherInterface.
Dropped usage of separate interface for ResourceProcessor and
ResourcesProcessor and go with general ResourceEnricher interface. The
custom HandlerAdapter now also invokes enrichers for Resources' content
elements before invoking enrichers for the Resources instance itself.
2012-08-23 11:13:00 +02:00
Jon Brisbin
a2b2dd4e41 Merge branch 'master' of github.com:SpringSource/spring-data-rest 2012-08-22 09:43:02 -05:00
Jon Brisbin
ca907e146c Merge pull request #34 from SpringSource/DATACMNS-40
DATAREST-40 - General purpose post-processing mechanism for resources.
2012-08-22 07:42:25 -07:00
Jon Brisbin
156b1f0a91 Added wiki doc on embedded entities. 2012-08-22 09:39:25 -05:00
Oliver Gierke
ed9bb157c7 DATAREST-40 - General purpose post-processing mechanism for resources.
This commit implements the components described in DATAREST-40. The core
of it is the ResourceProcessingHandlerMethodReturnValueHandler. It gets 
ResourceProcessor and ResourcesProcessor instances handed into its 
constructor and selects the ones that need to be invoked in the calls to
handleReturnValue(…). In this process it does a variety of generics 
checks to ensure only the correct post-processors. To do so it inspects 
the controller method's return type, the object value type as well as 
the returned value potentially.

Assume we have a specialized Resource type 
StringResource extends Resource<String>. Beyond that we have a 
ResourceProcessor<Resource<String>> registered. Here's the decision 
matrix:

Return type					Returned type		What get's used?
Resource<?>					Resource<String>	object value inspected (Resource.getContent())
Resource<String>			Resource<String>	method return type
Resource<String>			StringResource		object value type as it's more specialized
StringResource				StringResource		method return type
Resource<?>					Resource<Long>		no invocation, object value doesn't match
Resource<? extends Number>	Resource<Long>		no invocation, object value doesn't match
Resource<Long>				Resource<Long>		no invocation, object value doesn't match

This works exactly the same for Resources returned. We peek into the 
collection returned by getContent() in case return value inspection is 
needed for type matches. If the collection is empty we don't match. The 
same applies to null values returned.

The second component added is the ResourcePostProcessorInvokingHandlerAdapter 
which customizes the setup of a RequestMappingHandlerAdapter by fronting 
the current configuration with the 
ResourceProcessingHandlerMethodReturnValueHandler to let it intercept
the handling and potentially call the post-processors.

Upgraded to snapshots of Spring Data Commons until we get to the next 
release and added Mockito as dependency.
2012-08-22 16:29:26 +02:00
Jon Brisbin
9069774dc5 #32: Fix for bug triggered by including Accept: */* header. 2012-08-20 16:47:00 -05:00
Jon Brisbin
3aa8905b15 Added configuration property for domain type to repository mappings. Also improved the post-processing support, though I think there's still some room for tweaking. 2012-08-20 15:06:15 -05:00
Jon Brisbin
2000d07b32 Introduced a MethodParameterConversionService to help convert query parameters that might be annotated with specific converters. 2012-08-20 08:23:58 -05:00
Jon Brisbin
349c3b9777 Missed checking for non-optional relationship on DELETE a singular relationship. Now works as it's supposed to. 2012-08-17 15:07:45 -05:00
Jon Brisbin
023ab6b885 Fix problem with the ConversionService not being sufficiently checked for converters when reading query parameters, requiring an alternative mechanism for doing parameter conversion. 2012-08-17 14:39:34 -05:00
Jon Brisbin
b9b6a8fe92 DATAREST-39: Modified the DELETEing of links so that an attempt to delete a required relationship will result in a 405 Method Not Allowed. Had to change the entities and tests to accommodate the new required relationship on the Address entity, which pingponged into a number of changes. 2012-08-17 13:37:26 -05:00
Jon Brisbin
2dd0511f8f #28, #29: Support for nested objects as links in the JSON representation. 2012-08-17 08:46:25 -05:00
Jon Brisbin
3da1a241e0 DATAREST-38: Adding self link to related entity representation in addition to providing the Content-Location header. 2012-08-16 07:59:58 -05:00
Jon Brisbin
524eaa07fc Documentation updates. 2012-08-16 07:57:39 -05:00
Jon Brisbin
d7e2e53ce2 Implemented a new style of JSON serialization and deserialization by registering Repository-aware components with Jackson's underlying ObjectMapper. This has the benefit of allowing us to transliterate domain objects into link representations and back again, no matter where those entities appear in complex nested object graphs. 2012-08-15 14:31:57 -05:00
Jon Brisbin
d2c6ecacc5 Tweaking fluent bean utils by adding fallback to Field access. 2012-08-15 14:28:23 -05:00
Jon Brisbin
6a28da79c3 Updated to Gradle 1.1 2012-08-15 14:24:44 -05:00
Jon Brisbin
3393780e65 DATAREST-37: Display entities inline when accessing relationship links. 2012-08-13 09:32:42 -05:00
J. Brisbin
17c97eb423 Merge pull request #26 from ericbottard/patch-1
Broken link in README
2012-08-08 06:37:08 -07:00
Eric Bottard
ca1115f5fc Broken link in README 2012-08-08 11:12:51 +03:00
Jon Brisbin
4abd842a86 Added an annotation for doing parameter conversion @ConvertWith. You can now specify a Spring Core Converter class to use to convert the query parameter String[] values coming in on the query string to the type needed in the query method parameter. 2012-08-07 17:05:43 -05:00
Jon Brisbin
42c86af9a2 Fixed a couple failing tests. 2012-08-07 11:07:20 -05:00
Jon Brisbin
81b5f29c1e Adding a test scenario for @MappedSuperclass, fixed a couple bugs w.r.t. generating links to entities. 2012-08-07 11:03:02 -05:00
Jon Brisbin
e6de869935 Updated wiki docs about event handling for render events. 2012-08-07 11:02:23 -05:00