DATAREST-227 - Broke up AbstractWebIntegrationTest and its subclasses.

Decouple the test machinery of this class from the barrage of common test cases used against the various data stores. This way, other test suites that use the same integration approach don't have to be a part of this class hierarchy. Also move utilities and assertion methods into separate utility classes to slim down the class hierarchy.

Original pull request: #149.
DATAREST-227 - Renamed WebTestUtils to TestMvcClient.

Renmaed WebTestUtils to TestMvcClient, added assertions to constructor and fixed formatting of JavaDoc.

Original pull request: #149.
DATAREST-409 - Port RepositoryInvoker API to Spring Data Commons.

Introduced SupportedHttpMethods abstraction to be able to test the exposure of HTTp methods based on a CrudMethods instance only. Moved ResourceType to the core module.
DATAREST-415 - Moved to PersistentPropertyAccessor API.

We now use the PersistentPropertyAccessor provided by the PersistentEntity to lookup property values to benefit from store-specific customizations. Code that relies on value conversion by using a ConversionService now explicitly uses a ConvertingPropertyAccessor.

Related tickets: DATACMNS-596.
DATAREST-416 - Switched to IdentifierAccessor API where needed.

We now use the newly introduced IdentifierAccessor API to make sure we benefit from store specific optimizations when looking up identifier values.

Added some user class lookups to make sure the projection and resource mapping lookup works if proxies types are handed around.
DATAREST-417 - Adapt to type reorganization in Spring Data Commons.
DATAREST-401 - Updated changelog.
DATAREST-160 - Added support for ETag/If-Match based on entity's version property.

Original pull request: #148.
DATAREST-160 - Polished support for ETag headers based on version properties.

Introduced a dedicated value object for ETags and moved the logic of ETagValidator into it. Switched from an annotation based injection model to a type based one.

The HTTP status code for a non-matching ETag is now 412 Precondition failed as the HTTP specification suggests.

Original pull request: #148.
DATAREST-418 - Updated changelog.
DATAREST-418 - Prepare 2.3.0.M1 (Fowler M1).
DATAREST-418 - Release version 2.3.0.M1.
DATAREST-418 - Prepare next development iteration.
DATAREST-418 - After release cleanups.
DATAREST-394, DATAREST-408 - Projections now consider collections and maps.

The ProjectingMethodInterceptor now inspects collections and maps to apply projections to collection elements and map values. Test cases inspired by a contribution of Saulo Medeiros de Araujo.

Related pull request: #152.
DATAREST-388 - Improved annotation based event handling.

The annotation based event handling now relies on the type of the first method argument to determine the domain type the handler is interested in. Improved method invocation to not unnecessarily wrap exceptions thrown from them. Changed the test cases to throw a dedicated runtime exception to implicitly test that the 

Renamed LinkSaveEvent to LinkedEntityEvent as it's not only used for save-events for entities. Make use of Methods' USER_METHOD filter. Moved the class into the util package. Removed the UUID converter as Spring's DefaultFormattingConversionService provides it out of the box.

Added missing license headers and JavaDoc. Deprecated Class<?> attributes on handling annotations.

Related pull request: #151.
DATAREST-421 - Extracted @ControllerAdvice class in order to allow easy overriding.

Original pull request: #155.
DATAREST-421 - Polishing of new exception handling infrastructure.

Removed leftovers from AbstractRepositoryRestController. Renamed GlobalExceptionHandler to RepositoryRestExceptionHandler and minimized visibility of exception handler methods. Restricted application of the exception handler to controllers in the Spring Data REST base package.

Relatted pull request: #155.
DATAREST-422 - Fixed broken link to reference documentation in README.

Original pull request: #153.
DATAREST-387 - Added integration tests for Spring Data Solr repositories.

Added configuration for setting up an EmbeddedSolrServer instance within a temporary directory. We use a temporary test folder created by JUnit where we copy the required configuration to. The directory will also hold all index data and will be deleted afterwards.

Original pull request: #156.