Removed the attempt to add a link to the response for non-associations. Switched to the usage of Simple(Property|Association)Handlers for simplified generics.
Made RepositoryInvokerFactory an interface and renamed the previously existing implementation class to DefaultRepositoryInvokerFactory. Removed instantiation of the class from ResourceMetadataHandlerMethodArgumentResolver to keep the logic which implementation to use solely in the configuration.
Set order of RepositoryRestHandlerMapping to LOWEST_PRECEDENCE - 100 to give core Spring Framework components the chance to hook into the right place in the chain.
Refactored RepositoryRestHandlerMapping to really check for the exposed path and added test cases for handler method resolution.
PersistentEntityJackson2Module now entirely relies on the property mapping to do the right thing for link creation. The PropertyResourceMapping now returns the property name for both rel and path.
Use constructor injection consistently now in ResourceProcessorInvokingHandlerAdapter and RepositoryRestHandlerAdapter. Removed unnecessary constructor in ResourceProcessorInvokingHandlerAdapter.
Renamed RestController annotation to RepositoryRestController to avoid confusion with Spring 4's @RestController.
Fix ResourceProcessorInvokingHandlerAdapter to call
getReturnValueHandlers() via reflection and deal with different
response types.
This change is necessary due to SPR-10519 which changed the API of
RequestMappingHandlerAdapter.getReturnValueHandlers() to return a
List rather than a HandlerMethodReturnValueHandlerComposite.
Original pull request: #114.
Merged core and repository modules into core. Renamed some packages for consistency in naming and in preparation to break up some package cycles. Removed @BaseUri and the according resolver. Refactored controllers a bit to have more reusable chunks of code.
The exporter can now work with repositories that do not implement CrudRepository. Introduced a new RepositoryInvoker abstraction that transparently exposes which CRUD methods the repository offers.
We still offer special invokers that can be used for CrudRepository and PagingaAndSortingRepository implementations to avoid the reflection overhead the general mechanism introduces.
Removed the need for RepositoryInformationSupport. Refactored Converter implementations to get dependencies injected directly and use constructor injection.
Added new RepositoryInvoker abstraction to avoid reflection for known CrudRepository or PagingAndSortingRepository. Refactored existing RepositoryMethodInvoker to implement the new abstraction.
Refactored AbstractRepositoryRestController and RepositoryEntityContoller to use new mapping API.
Simplified new RepositoryMappings infrastructure. Integrated EvoInflectionRelProvider to build collection resource rels. Bumped version number to 2.0 as we're going to break backwards compatibility with the next release to straighten out the rel construction and mapping.
This is to prevent a parallel Spring MVC setup from picking up the controller classes in addition to the custom RequestHandlerMapping we deploy.
Polished some compiler warnings on the way.