Commit Graph

375 Commits

Author SHA1 Message Date
Oliver Gierke
f1fd8fe0e2 DATACMNS-137, DATAJPA-116 - Added support for annotation based auditing.
Introduced annotations CreatedBy, CreatedDate, LastModifiedBy and LastModifiedDate to allow demarcating fields as auditing related ones. The date related annotations require a field type of either DateTime, Date, Long or a primitive long. All these annotations can be used as meta-annotations.

Extracted an AuditingHandler from Spring Data JPA which allows to transparently set auditing information on objects implementing Auditable or use the newly introduced annotations in a store independent manner. This allows other stores to implement adapters to provide auditing support as well.

Introduced a more convenient way of finding fields in ReflectionUtils using the FieldFilters of core Spring. The API allows to select fields based on a filter and can transparently check that only one field matches the given filter if desired.
2012-11-20 17:25:16 +01:00
Oliver Gierke
2042bda8a2 DATACMNS-248 - Moved to Slf4j API for logging. 2012-11-19 23:30:14 +01:00
Oliver Gierke
c0e45a4a3b DATACMNS-247 - Improved implementation of RepositoryBeanDefinitionRegistrarSupport.
RepositoryBeanDefinitionRegistrarSupport not implements BeanClassLoaderAware and ResourceLoaderAware as Spring 3.2 will regard these callback interfaces and inject the resources. We still default these injected resources upon invocation to be able to run on Spring 3.1 as well.
2012-11-13 15:06:54 +01:00
Oliver Gierke
874da365ed DATACMNS-168 - Allow customizing repository bean names.
The bean name is now resolved through inspecting Spring stereotype annotations and @Named on the repository interface. If none found we're still using the uncapitalized simple interface name as we did until now.
2012-11-12 14:28:13 +01:00
Spring Buildmaster
075e31d917 DATACMNS-192 - Prepare next development iteration. 2012-10-09 05:31:15 -07:00
Spring Buildmaster
18c1392e96 DATACMNS-192 - Release version 1.4.0.RELEASE. 2012-10-09 05:31:11 -07:00
Oliver Gierke
3498af528a DATACMNS-242 - Improved exception messages in QueryMethod. 2012-10-09 14:05:34 +02:00
Oliver Gierke
75026cdb1d DATACMNS-239 - Fixed event handling in AbstractResourcePopulatorFactoryBean.
Switched from implementing ApplicationEventPublisherAware to ApplicationContextAware to get a reference to an ApplicationContext to fix comparison of the event source.
2012-10-09 10:59:08 +02:00
Oliver Gierke
861cf40419 DATACMNS-240 - Upgraded to Querydsl 2.8.0. 2012-10-08 14:46:31 +02:00
Oliver Gierke
5ed34bc2ce DATACMNS-235 - Enforce dependency ordering for custom repository implementations. 2012-09-18 11:40:26 +02:00
Oliver Gierke
936facac88 DATACMNS-146 - PageableDefaults now takes sorting info as well.
PageableDefaults now has a sort and sortDir attribute to allow defining the default sorting options applied to the pageable.
2012-09-17 10:48:32 +02:00
Oliver Gierke
9b4cbb48f1 DATACMNS-233 - DomainClassConverter is now safe against null and empty Strings.
Added explicit check for null or empty String source before attempting conversion. Returning null for both cases.
2012-09-17 10:23:43 +02:00
Oliver Gierke
51d45f34c3 DATACMNS-229 - RepositoryInterfaceAwareBeanPostProcessor now uses bean class loader. 2012-09-13 20:00:53 +02:00
Oliver Gierke
346de533bc DATACMNS-231 - Polished Sort domain class.
Improved/fixed JavaDoc. Made orders property final. Fixed formatting here and there. Deprecated Order.create(…) factory method as new Sort(…) can be used instead.
2012-09-13 19:26:43 +02:00
Oliver Gierke
96bc596333 DATACMNS-176 - ClassTypeInformation now always inspects user class.
Unwrap potentially wrapped CBGlib classes handed to ClassTypeInformation for inspection.
2012-09-13 19:21:10 +02:00
Oliver Gierke
a01de83547 DATACMNS-228 - AbstractMappingContext disregards Groovy meta fields.
Refactored persistent field discovery by extracting the FieldFilter implementation and improving the way excluded fields are detected. We now exclude all fields named "this$*" as well as a metaClass field of type groovy.lang.MetaClass explicitly.
2012-09-10 12:56:20 +02:00
Oliver Gierke
bd6c0bf7c6 DATACMNS-224 - RepositoryPopulator now throws event after population.
The ResourceReaderRepositoryPopulator now throws an RepositoriesPopulatedEvent after the population was finished. This indicates the data provided through the resources having been inserted into the database and the repository setup (including population) being completed.
2012-09-04 10:28:06 +02:00
Oliver Gierke
8604de5597 DATACMNS-223 - Added logging to ResourceReaderRepositoryPopulator.
Logging the read resources in INFO level, the individual elements persisted in DEBUG. Polished JavaDoc.
2012-09-04 10:02:32 +02:00
Oliver Gierke
5c54e7fef1 DATACMNS-222 - Fixed JavaDoc of AbstractRepositoryPopulator. 2012-09-04 09:51:37 +02:00
Aleksander Blomskøld
f0ffd0316c DATACMNS-221 - Added support for Unicode characters in PartTree.
Altered parsing regular expressions to support unicode characters.
2012-09-04 09:08:11 +02:00
Oliver Gierke
4939fbf3bc DATACMNS-226 - Fixed bug in ConfigurableTypeInformationMapper caching.
Separated ConfigurableTypeInformationMapper from MappingContextTypeInformationMapper. The latter now lazily picks up the alias information if the cached values do not contain aliases.

Polished JavaDocs and clarified meaning of null values.
2012-09-03 13:36:34 +02:00
Oliver Gierke
d0e0c8cf5f DATACMNS-225 - Updated Querydsl Maven plugin to 1.0.4. 2012-09-03 13:14:56 +02:00
Spring Buildmaster
ed7beffbde DATACMNS-217 - Prepare next development iteration. 2012-08-23 10:25:19 -07:00
Spring Buildmaster
11da3c3dab DATACMNS-217 - Release version 1.4.0.RC1. 2012-08-23 10:25:15 -07:00
Oliver Gierke
6d2d22954f DATACMNS-218 - Expose RevisionMetadata from Revision. 2012-08-23 18:51:50 +02:00
Oliver Gierke
307e003902 DATACMNS-214 - Simple types are not considered PersistentEntities anymore.
Before actually adding a type as PersistentEntity, AbstractMappingContext will call shouldCreatePersistentEntityFor(TypeInformation<?> type) now. The default implementation will just consider the SimpleTypeHolder for that decision. However as adding a Converter to the context will render the converted object to be treated as simple, one might want to override this method to be more precise and only rule out store-specific simple types at this stage.
2012-08-16 12:55:07 +02:00
Oliver Gierke
0fc753f151 DATACMNS-211 - Fixed component type resolving for arrays.
ClassTypeInformation does not resolve nested array types anymore as a multidimensional array in fact has a component type of an array of one dimension less, e.g. String[][].getComponentType() -> String[].
2012-08-16 12:52:25 +02:00
Oliver Gierke
c6b04618b9 DATACMNS-216 - Removed deprecations from AbstractMappingContext.
Removed the deprecation as it might still be necessary to set the ApplicationEventPublisher to emit MappingContextEvents.
2012-08-16 12:52:24 +02:00
Oliver Gierke
d9e5d92a16 DATACMNS-207 - Removed getPropertyDescriptor() from PersistentProperty. 2012-08-16 12:52:24 +02:00
Oliver Gierke
beea916da0 DATACMNS-215 - Removed validators from MappingContext API. 2012-08-16 12:52:24 +02:00
Oliver Gierke
f4a5edcf44 DATACMNS-213 - Declaring all compile time dependencies locally.
There have been a few dependencies which we depended on on compile time but which were pulled into the classpath transitively. Declaring these dependencies now explicitly. Keeping them optional to allow minimal footprint.
2012-08-13 14:50:03 +02:00
Oliver Gierke
35d96afac6 DATACMNS-212 - Sonargraph checks and improvements.
Merged mapping.context and mapping.event packages. Moved MappingContext event into context package. Updated Sonargraph architecture description and completed package and dependency mapping.
2012-08-13 14:26:40 +02:00
Oliver Gierke
27a8a8df91 DATACMNS-47 - Guard against @EnableRepositories annotations not carrying @Inherited.
If an @EnableRepository annotation does not carry an @Inherited annotation and the annotation is used in a JavaConfig inheritance scenario the ImportBeanDefinitionRegistrar gets invoked without the annotation metadata available. The RepositoryBeanDefinitionRegistrarSupport now guards against that case and will not invoke registration of repository bean definitions. It's strongly recommended to equip @EnableRepository annotations with @Inherited to accommodate this scenario.
2012-08-13 11:23:52 +02:00
Oliver Gierke
f1aff4ed10 DATACMNS-211 - Improved TypeInformation abstraction. 2012-08-07 19:28:30 +02:00
Oliver Gierke
f532404521 DATACMNS-206 - Guard against PropertyDescriptor being null.
Added guards to PropertyDescriptor access to prevent NullPointerExceptions in cases it is not given in the first place. Polished JavaDoc for test case.
2012-07-31 15:41:56 +02:00
Oliver Gierke
fc57f602e9 DATACMNS-209 - MappingContextEvent now carries its emitting MappingContext.
MappingContextEvent now has an wasEmittedBy(MappingContext<?, ?> context) method to allow identifying whether the event was emitted by the given MappingContext. Useful if multiple MappingContexts are in place and one wants to react on the events emitted by a particular one only.
2012-07-31 15:38:16 +02:00
Oliver Gierke
583a60baed DATACMNS-206 - Improved working with getters and setters for PersistentProperty.
PersistentProperty now exposes getGetter() and getSetter() methods which restrict the methods being returned to return or accept type compatible values to the actual properties type. Thus when you implement a custom getter or setter which - by the definition of the JavaBean spec - would qualify as read or write method for a particular property, we now ensure that they are only considered if they match the type of the field exposed.
2012-07-24 15:12:04 +02:00
Spring Buildmaster
d66d166e8b DATACMNS-191 - Prepare next development iteration. 2012-07-23 09:51:32 -07:00
Spring Buildmaster
94d042a573 DATACMNS-191 - Release version 1.4.0.M1. 2012-07-23 09:51:28 -07:00
Oliver Gierke
f476100f28 DATACMNS-203 - Re-enabled accidentally disabled unit tests. 2012-07-23 17:37:47 +02:00
Oliver Gierke
c64f01414f DATACMNS-164 - Added support for XML/JSON marshaling of Page, Pageable and Sort.
Added XmlTypeAdapter implementations that convert the PageImpl, PageRequest and Sort value objects into a JAXB marshalable object.
2012-07-23 17:27:17 +02:00
Oliver Gierke
cf71070de6 DATACMNS-202 - Move helper classes for BeanDefinitionParses into Commons. 2012-07-18 23:14:28 +02:00
Oliver Gierke
d7df08f6b7 DATACMNS-201 - Fixed critical FindBugs warnings. 2012-07-18 20:53:24 +02:00
Oliver Gierke
96795f2980 DATACMNS-47 - Add support for JavaConfig based repository configuration.
Completely rewrote namespace bean definition parsing to be extendable more easily. Separated XML concerns from annotation based configuration. The central point to extend the namespace parsing for a certain module is now hidden behind the RepositoryConfigurationExtension interface (have a look at the RepositoryConfigurationExtensionSupport base class as well).
2012-07-16 19:49:56 +02:00
Oliver Gierke
464c3f048b DATACMNS-187 - Added getRevisionDate() to Revision.
Revision now exposes the revision date of the underlying metadata.
2012-07-16 10:53:18 +02:00
Oliver Gierke
4d326faa25 DATACMNS-193 - Introduced isQueryMethod(…) on RepositoryInformation. 2012-07-16 10:02:44 +02:00
Oliver Gierke
d9f293be54 DATACMNS-188 - Removed obsolete method from AbstractMappingContext. 2012-07-09 09:18:24 +02:00
Oliver Gierke
ebf8fdcbc4 DATACMNS-186 - Improved the way id properties are detected.
The id properties are now discovered by the BasicPersistentEntity during the call to addPersistentProperty(…). Beyond that the method rejects the id property if one was already set.
2012-06-22 14:24:00 +02:00
Oliver Gierke
f540306774 DATACMNS-185 - Expose AbstractMappingContext initialization.
Added initialize() method to AbstractMpapingContext to ease manual initialization.
2012-06-22 14:04:22 +02:00
Oliver Gierke
d441d95197 DATACMNS-58 - Added support for repository populators.
Added RepositoryPopulator abstraction and implementations based on Spring OXM Unmarshallers as well as Jackson. This allows arbitrary repositories being populated with data pulled from XML / JSON, no matter what store they are actually backed. The populator will eventually populate the repositories held in a Repositories instance. It can be used like this:

Repositories repositories = new Repositories(applicationContext);
ResourceReader reader = new JacksonResourceReader();

ResourceReaderRepositoryPopulator populator = new ResourceReaderRepositoryPopulator(reader);
populator.setResourceLocation("classpath*:data.json");
populator.populate(repositories);

The ResourceReader defines what technology shall be used to read the data from the file into objects. The ResourceReaderRepositoryPopulator uses the reader and can either get a set of Resource instances configured or is able to lookup resources using a location string. The actual Repositories instance captures all CrudRepository instances contained inside an ApplicationContext.

The populators can also be used from within XML configuration though the repository namespace elements shown below:

<repository:jackson-populator location="classpath:org/springframework/data/repository/init/data.json" />
		
<repository:unmarshaller-populator location="classpath:org/springframework/data/repository/init/data.xml" unmarshaller-ref="unmarshaller" />

Updated reference documentation accordingly.
2012-06-21 20:03:55 +02:00