Documented verify() to throw a MappingException in case verification fails. Let this exception flying cause the PersistentEntity already added to the cache be removed from it in turn.
Fixed execution of integration tests and tests in classes starting with Abstract* along the way. Upgraded to Mockito 1.8.5.
ClassTypeInformation now holds a cache for Class<?> to TypeInformation<?> mappings. It also exposes constants for Object, Collection, Set, List and Map TypeInformations.
We now use an exclusive upper bound of 4.0.0.RELEASE for Spring dependencies. With the snapshot repository removed we now get the latest release milestone to build on. Changed repository links to use http://repo.springframework.org to route dependencies through our Artifactory instance. Fixed some plugin dependency versions along the way.
The former getNestedTypeToAdd(…) method in AbstractMappingContext is now located in PersistentProperty to allow easier customization of the implementation. We also not only support returning one type from it but rather an Iterable of them to prepare handling of custom types implementing Collection interfaces.
Introduced version range for Spring dependency of [3.0.6.RELEASE, 3.1.0.RC1]. This causes Maven to scan the metadata in the configured repositories to find the latest version up to Spring 3.1.0.RC1. For users having the Spring Milestone repo configured this will resolve against 3.1.0.RC1 then. All others will get the latest one from Maven Central which is 3.0.6. To let Bundlor still use 3.0.6 I've created a org.springframework.version.30 property and let template.mf use that.
Removing Number from SimpleTypeHolder's default Set of types results in
Number sub-types not explicitly listed not being considered as simple
by default.
Fixed SimpleTypeHolder.isSimpleType(Class<?> type) for calls where the Class object handed in is derived from an Enum that implements an abstract method. These Class objects return false for a call to isEnum(). So an ….isAssignableFrom(…) check is safer.
Refactored the definition of what domain class is returned from a query method into a common AbstractRepositoryMetadata and moved ClassUtils.getReturnedDomainClass into RepositoryMetadata. Moved test cases accordingly. Added getReturnType(Method method) to TypeInformation.
Introduced Conversion layer with allowed dependencies to Mapping and Core. Added Authentication subsystem to Core layer. Adapted mapping of Cross-store subsystem according to new package name.
PersistentPropertyPath got a few new methods to build String representations of it. Beyond that we introduced accessor methods for the base and leaf path as well as the ability to detect base paths and create path extensions based on a given base path.
Refactored MappingContext.getPersistentPropertyPath(…) to return a PersistentPropertyPath instance which allows iterating over the properties returned for the Property delivered as well as creating dot paths from it.
Renamed Property to PropertyPath and moved it into mapping package.
Always setting a transaction manager breaks repository factories that do not expose a transactionManager property. Thus it's now the responsibility of the concrete BeanDefinitionParser to parse transaction manager configuration.
Setting a default transaction manager bean name increases performance of transaction interception as we can lookup the PlatformTransactionManager by name rather than by type.
ConcurrentHashMap does not allow null values to be set so we now store Void.class as custom null-value instead and default this value back to null in predictBeanType(…).