From 736b8adf08273c1b5d6c1cd3622a141608bee414 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Mon, 13 Jun 2011 20:23:26 -0700 Subject: [PATCH] Refactored package structure. Resolved dependency cycles in repository and mapping packages. Introduced repository.core package as well as core.support where most of the type of former repository.support is in now. New repository.support only contains additional stuff built on top of core repository abstraction (e.g. Converters, PropertyEditors). Added some more unit tests to core mapping abstractions and removed not needed methods from its API. --- .../data/mapping/{model => }/Association.java | 16 +++- .../data/mapping/AssociationHandler.java | 12 ++- .../data/mapping/PersistentEntity.java | 81 +++++++++++++++++++ .../{model => }/PersistentProperty.java | 2 +- .../{model => }/PreferredConstructor.java | 2 +- .../data/mapping/PropertyHandler.java | 5 +- .../{ => context}/AbstractMappingContext.java | 9 ++- .../{model => context}/MappingContext.java | 4 +- .../mapping/context/MappingContextAware.java | 1 - .../MappingContextAwareBeanPostProcessor.java | 1 - .../mapping/event/MappingContextEvent.java | 4 +- .../AbstractPersistentProperty.java | 8 +- .../AnnotationBasedPersistentProperty.java | 10 +-- .../{ => model}/BasicPersistentEntity.java | 67 +++++++++++---- .../data/mapping/{ => model}/BeanWrapper.java | 12 ++- .../{ => model}/MutablePersistentEntity.java | 9 ++- .../mapping/model/ParameterValueProvider.java | 3 +- .../data/mapping/model/PersistentEntity.java | 77 ------------------ .../PreferredConstructorDiscoverer.java | 6 +- .../mapping/{ => model}/SimpleTypeHolder.java | 2 +- .../SpELAwareParameterValueProvider.java | 2 +- ...tractRepositoryConfigDefinitionParser.java | 2 +- .../{support => core}/EntityInformation.java | 2 +- .../{support => core}/EntityMetadata.java | 2 +- .../RepositoryInformation.java | 2 +- .../{support => core}/RepositoryMetadata.java | 2 +- .../support/AbstractEntityInformation.java | 3 +- .../support/AnnotationRepositoryMetadata.java | 3 +- .../support/DefaultRepositoryInformation.java | 4 +- .../support/DefaultRepositoryMetadata.java | 3 +- .../support/PersistableEntityInformation.java | 3 +- .../support/QueryCreationListener.java | 2 +- .../support/RepositoryFactoryBeanSupport.java | 4 +- .../support/RepositoryFactoryInformation.java | 3 +- .../support/RepositoryFactorySupport.java | 7 +- ...sitoryInterfaceAwareBeanPostProcessor.java | 2 +- .../support/RepositoryProxyPostProcessor.java | 2 +- ...sactionalRepositoryFactoryBeanSupport.java | 4 +- ...sactionalRepositoryProxyPostProcessor.java | 2 +- .../{ => core}/support/package-info.java | 2 +- .../repository/query/QueryLookupStrategy.java | 2 +- .../data/repository/query/QueryMethod.java | 4 +- .../repository/query/RepositoryQuery.java | 1 + .../support/DomainClassConverter.java | 2 + .../support/DomainClassPropertyEditor.java | 1 + .../DomainClassPropertyEditorRegistrar.java | 2 + .../data/mapping/MappingMetadataTests.java | 31 ++++--- .../data/mapping/PersistentEntitySpec.java | 18 +++++ ...eferredConstructorDiscovererUnitTests.java | 4 +- .../mapping/SimpleTypeHolderUnitTests.java | 1 + .../model/BasicPersistentEntityUnitTests.java | 37 +++++++++ .../AbstractEntityInformationUnitTests.java | 4 +- ...AnnotationRepositoryMetadataUnitTests.java | 5 +- ...onTransactionAttributeSourceUnitTests.java | 5 +- ...DefaultRepositoryInformationUnitTests.java | 8 +- .../DefaultRepositoryMetadataUnitTests.java | 4 +- ...PersistableEntityInformationUnitTests.java | 3 +- ...eryExecuterMethodInterceptorUnitTests.java | 6 +- .../RepositoryFactorySupportUnitTests.java | 8 +- ...erfaceAwareBeanPostProcessorUnitTests.java | 4 +- ...RepositoryProxyPostProcessorUnitTests.java | 4 +- .../repository/query/QueryMethodUnitTest.java | 2 +- .../DomainClassConverterUnitTests.java | 2 + ...ClassPropertyEditorRegistrarUnitTests.java | 2 + .../DomainClassPropertyEditorUnitTests.java | 1 + 65 files changed, 359 insertions(+), 189 deletions(-) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{model => }/Association.java (72%) create mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentEntity.java rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{model => }/PersistentProperty.java (97%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{model => }/PreferredConstructor.java (98%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => context}/AbstractMappingContext.java (96%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{model => context}/MappingContext.java (92%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/AbstractPersistentProperty.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/AnnotationBasedPersistentProperty.java (90%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/BasicPersistentEntity.java (67%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/BeanWrapper.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/MutablePersistentEntity.java (86%) delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentEntity.java rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/PreferredConstructorDiscoverer.java (95%) rename spring-data-commons-core/src/main/java/org/springframework/data/mapping/{ => model}/SimpleTypeHolder.java (98%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{support => core}/EntityInformation.java (96%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{support => core}/EntityMetadata.java (93%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{support => core}/RepositoryInformation.java (97%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{support => core}/RepositoryMetadata.java (96%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/AbstractEntityInformation.java (93%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/AnnotationRepositoryMetadata.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/DefaultRepositoryInformation.java (97%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/DefaultRepositoryMetadata.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/PersistableEntityInformation.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/QueryCreationListener.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/RepositoryFactoryBeanSupport.java (95%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/RepositoryFactoryInformation.java (90%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/RepositoryFactorySupport.java (97%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/RepositoryInterfaceAwareBeanPostProcessor.java (98%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/RepositoryProxyPostProcessor.java (94%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/TransactionalRepositoryFactoryBeanSupport.java (95%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/TransactionalRepositoryProxyPostProcessor.java (99%) rename spring-data-commons-core/src/main/java/org/springframework/data/repository/{ => core}/support/package-info.java (56%) create mode 100644 spring-data-commons-core/src/test/java/org/springframework/data/mapping/PersistentEntitySpec.java create mode 100644 spring-data-commons-core/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/AbstractEntityInformationUnitTests.java (90%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/AnnotationRepositoryMetadataUnitTests.java (84%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/CustomAnnotationTransactionAttributeSourceUnitTests.java (87%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/DefaultRepositoryInformationUnitTests.java (86%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/DefaultRepositoryMetadataUnitTests.java (94%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/PersistableEntityInformationUnitTests.java (94%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/QueryExecuterMethodInterceptorUnitTests.java (85%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/RepositoryFactorySupportUnitTests.java (92%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java (93%) rename spring-data-commons-core/src/test/java/org/springframework/data/repository/{ => core}/support/TransactionRepositoryProxyPostProcessorUnitTests.java (92%) diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/Association.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/Association.java similarity index 72% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/Association.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/Association.java index 4ef40cdc7..b5bfbdd2a 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/Association.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/Association.java @@ -14,16 +14,26 @@ * limitations under the License. */ -package org.springframework.data.mapping.model; +package org.springframework.data.mapping; + /** + * Value object to capture {@link Association}s. + * + * @param the {@link PersistentProperty}s the association connects. * @author Jon Brisbin */ public class Association

> { - protected P inverse; - protected P obverse; + private final P inverse; + private final P obverse; + /** + * Creates a new {@link Association} between the two given {@link PersistentProperty}s. + * + * @param inverse + * @param obverse + */ public Association(P inverse, P obverse) { this.inverse = inverse; this.obverse = obverse; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AssociationHandler.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AssociationHandler.java index aad45eb34..e428cb0ef 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AssociationHandler.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AssociationHandler.java @@ -16,12 +16,20 @@ package org.springframework.data.mapping; -import org.springframework.data.mapping.model.Association; -import org.springframework.data.mapping.model.PersistentProperty; + /** + * Callback interface to implement functionality to be applied to a collection of {@link Association}s. + * * @author Jon Brisbin + * @author Oliver Gierke */ public interface AssociationHandler

> { + + /** + * Processes the given {@link Association}. + * + * @param association + */ void doWithAssociation(Association

association); } diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentEntity.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentEntity.java new file mode 100644 index 000000000..a46594332 --- /dev/null +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentEntity.java @@ -0,0 +1,81 @@ +package org.springframework.data.mapping; + +import java.util.Collection; + +import org.springframework.data.util.TypeInformation; + +/** + * Represents a persistent entity + * + * @author Graeme Rocher + * @author Jon Brisbin + * @author Oliver Gierke + */ +public interface PersistentEntity> { + + /** + * The entity name including any package prefix + * + * @return must never return {@literal null} + */ + String getName(); + + /** + * Returns the {@link PreferredConstructor} to be used to instantiate objects of this {@link PersistentEntity}. + * + * @return must never return {@literal null}. + */ + PreferredConstructor getPreferredConstructor(); + + /** + * Returns the id property of the {@link PersistentEntity}. Must never return {@literal null} as a + * {@link PersistentEntity} instance must not be created if there is no id property. + * + * @return the id property of the {@link PersistentEntity}. + */ + P getIdProperty(); + + /** + * Obtains a PersistentProperty instance by name. + * + * @param name The name of the property + * @return The {@link PersistentProperty} or {@literal null} if it doesn't exist + */ + P getPersistentProperty(String name); + + /** + * Returns the resolved Java type of this entity. + * + * @return The underlying Java class for this entity + */ + Class getType(); + + /** + * Returns the {@link TypeInformation} backing this {@link PersistentEntity}. + * + * @return + */ + TypeInformation getTypeInformation(); + + /** + * A list of property names + * + * @return A List of strings + */ + Collection getPersistentPropertyNames(); + + /** + * Applies the given {@link PropertyHandler} to all {@link PersistentProperty}s contained in this + * {@link PersistentEntity}. + * + * @param handler must not be {@literal null}. + */ + void doWithProperties(PropertyHandler

handler); + + /** + * Applies the given {@link AssociationHandler} to all {@link Association} contained in this {@link PersistentEntity}. + * + * @param handler must not be {@literal null}. + */ + void doWithAssociations(AssociationHandler

handler); +} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentProperty.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java similarity index 97% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentProperty.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java index a19489771..5f583b235 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentProperty.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java @@ -1,4 +1,4 @@ -package org.springframework.data.mapping.model; +package org.springframework.data.mapping; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructor.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructor.java similarity index 98% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructor.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructor.java index 9a4b6a431..ce4bf7ae3 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructor.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping.model; +package org.springframework.data.mapping; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PropertyHandler.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PropertyHandler.java index 7a542ed28..c1ffb17fe 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PropertyHandler.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PropertyHandler.java @@ -13,14 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.mapping; -import org.springframework.data.mapping.model.PersistentProperty; - /** * Callback interface to do something with all plain {@link PersistentProperty} - * instances except associations, transient properties and the id-property. + * instances except associations and transient properties. * * @author Jon Brisbin */ diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractMappingContext.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java similarity index 96% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractMappingContext.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index bec397368..44fb23048 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractMappingContext.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.context; import java.beans.BeanInfo; import java.beans.IntrospectionException; @@ -35,11 +35,12 @@ import java.util.concurrent.ConcurrentMap; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.event.MappingContextEvent; -import org.springframework.data.mapping.model.MappingContext; import org.springframework.data.mapping.model.MappingException; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; +import org.springframework.data.mapping.model.MutablePersistentEntity; +import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.ClassTypeInformation; import org.springframework.data.util.TypeInformation; import org.springframework.util.ReflectionUtils; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingContext.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java similarity index 92% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingContext.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java index e79b337b8..9f846a1f4 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingContext.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java @@ -12,11 +12,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping.model; +package org.springframework.data.mapping.context; import java.util.Collection; import java.util.List; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.util.TypeInformation; import org.springframework.validation.Validator; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAware.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAware.java index 2d457b295..0959d5a79 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAware.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAware.java @@ -16,7 +16,6 @@ package org.springframework.data.mapping.context; -import org.springframework.data.mapping.model.MappingContext; /** * An interface to make beans aware of the active MappingContext in the current ApplicationContext. diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAwareBeanPostProcessor.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAwareBeanPostProcessor.java index 282089ab1..98fc92974 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAwareBeanPostProcessor.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContextAwareBeanPostProcessor.java @@ -22,7 +22,6 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; -import org.springframework.data.mapping.model.MappingContext; /** * BeanPostProcessor to make Spring beans aware of the current MappingContext. If a MappingContext exists with the diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/event/MappingContextEvent.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/event/MappingContextEvent.java index 89cca9bde..96968b57b 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/event/MappingContextEvent.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/event/MappingContextEvent.java @@ -17,8 +17,8 @@ package org.springframework.data.mapping.event; import org.springframework.context.ApplicationEvent; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.util.TypeInformation; /** diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractPersistentProperty.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java similarity index 94% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractPersistentProperty.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java index eb1dd0c8c..b2889c4dc 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AbstractPersistentProperty.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; import java.beans.PropertyDescriptor; import java.lang.annotation.Annotation; @@ -24,9 +24,9 @@ import java.util.Collection; import java.util.Map; import org.springframework.data.annotation.Reference; -import org.springframework.data.mapping.model.Association; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; +import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.util.TypeInformation; import org.springframework.util.Assert; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AnnotationBasedPersistentProperty.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java similarity index 90% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/AnnotationBasedPersistentProperty.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java index c00703843..d76f3c86b 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/AnnotationBasedPersistentProperty.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; import java.beans.PropertyDescriptor; import java.lang.annotation.Annotation; @@ -24,9 +24,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Reference; import org.springframework.data.annotation.Transient; -import org.springframework.data.mapping.model.Association; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; +import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; /** @@ -56,7 +56,7 @@ public abstract class AnnotationBasedPersistentProperty

> implement * @param information */ public BasicPersistentEntity(TypeInformation information) { + Assert.notNull(information); this.information = information; this.preferredConstructor = new PreferredConstructorDiscoverer(information).getConstructor(); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getPreferredConstructor() + */ public PreferredConstructor getPreferredConstructor() { return preferredConstructor; } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getName() + */ public String getName() { return getType().getName(); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getIdProperty() + */ public P getIdProperty() { return idProperty; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.mapping.MutablePersistentEntity#setIdProperty(P) */ public void setIdProperty(P property) { idProperty = property; } - public Collection

getPersistentProperties() { - return persistentProperties.values(); - } - - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.mapping.MutablePersistentEntity#addPersistentProperty(P) */ public void addPersistentProperty(P property) { + Assert.notNull(property); persistentProperties.put(property.getName(), property); } - public Collection> getAssociations() { - return associations.values(); - } - /* (non-Javadoc) * @see org.springframework.data.mapping.MutablePersistentEntity#addAssociation(org.springframework.data.mapping.model.Association) */ @@ -90,23 +101,44 @@ public class BasicPersistentEntity> implement associations.put(association.getInverse().getName(), association); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getPersistentProperty(java.lang.String) + */ public P getPersistentProperty(String name) { return persistentProperties.get(name); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getType() + */ public Class getType() { return information.getType(); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getTypeInformation() + */ public TypeInformation getTypeInformation() { return information; } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getPersistentPropertyNames() + */ public Collection getPersistentPropertyNames() { return persistentProperties.keySet(); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#doWithProperties(org.springframework.data.mapping.PropertyHandler) + */ public void doWithProperties(PropertyHandler

handler) { + Assert.notNull(handler); for (P property : persistentProperties.values()) { if (!property.isTransient() && !property.isAssociation()) { handler.doWithPersistentProperty(property); @@ -114,7 +146,12 @@ public class BasicPersistentEntity> implement } } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#doWithAssociations(org.springframework.data.mapping.AssociationHandler) + */ public void doWithAssociations(AssociationHandler

handler) { + Assert.notNull(handler); for (Association

association : associations.values()) { handler.doWithAssociation(association); } diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/BeanWrapper.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/BeanWrapper.java similarity index 94% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/BeanWrapper.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/BeanWrapper.java index 3afa6b7c2..b39ae7411 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/BeanWrapper.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/BeanWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; import java.lang.reflect.Array; import java.lang.reflect.Field; @@ -25,12 +25,10 @@ import java.util.List; import org.springframework.beans.BeanInstantiationException; import org.springframework.beans.BeanUtils; import org.springframework.core.convert.ConversionService; -import org.springframework.data.mapping.model.MappingInstantiationException; -import org.springframework.data.mapping.model.ParameterValueProvider; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; -import org.springframework.data.mapping.model.PreferredConstructor; -import org.springframework.data.mapping.model.PreferredConstructor.Parameter; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; +import org.springframework.data.mapping.PreferredConstructor; +import org.springframework.data.mapping.PreferredConstructor.Parameter; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/MutablePersistentEntity.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MutablePersistentEntity.java similarity index 86% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/MutablePersistentEntity.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MutablePersistentEntity.java index aebec6553..36d8aafcf 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/MutablePersistentEntity.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MutablePersistentEntity.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; + +import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; -import org.springframework.data.mapping.model.Association; -import org.springframework.data.mapping.model.PersistentEntity; -import org.springframework.data.mapping.model.PersistentProperty; /** diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/ParameterValueProvider.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/ParameterValueProvider.java index f6e167696..cef28ce34 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/ParameterValueProvider.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/ParameterValueProvider.java @@ -15,7 +15,8 @@ */ package org.springframework.data.mapping.model; -import org.springframework.data.mapping.model.PreferredConstructor.Parameter; +import org.springframework.data.mapping.PreferredConstructor; +import org.springframework.data.mapping.PreferredConstructor.Parameter; /** * Callback interface to lookup values for a given {@link Parameter}. diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentEntity.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentEntity.java deleted file mode 100644 index d3351055b..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PersistentEntity.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.springframework.data.mapping.model; - -import java.util.Collection; - -import org.springframework.data.mapping.AssociationHandler; -import org.springframework.data.mapping.PropertyHandler; -import org.springframework.data.util.TypeInformation; - - -/** - * Represents a persistent entity - * - * @author Graeme Rocher - * @author Jon Brisbin - * @author Oliver Gierke - */ -public interface PersistentEntity> { - - /** - * The entity name including any package prefix - * - * @return The entity name - */ - String getName(); - - PreferredConstructor getPreferredConstructor(); - - - /** - * Returns the id property of the {@link PersistentEntity}. Must never - * return {@literal null} as a {@link PersistentEntity} instance must not be - * created if there is no id property. - * - * @return the id property of the {@link PersistentEntity}. - */ - P getIdProperty(); - - /** - * A list of properties to be persisted - * - * @return A list of PersistentProperty instances - */ - Collection

getPersistentProperties(); - - /** - * A list of the associations for this entity. This is typically a subset of the list returned by {@link #getPersistentProperties()} - * - * @return A list of associations - */ - Collection> getAssociations(); - - /** - * Obtains a PersistentProperty instance by name - * - * @param name The name of the property - * @return The PersistentProperty or null if it doesn't exist - */ - P getPersistentProperty(String name); - - /** - * @return The underlying Java class for this entity - */ - Class getType(); - - TypeInformation getTypeInformation(); - - /** - * A list of property names - * - * @return A List of strings - */ - Collection getPersistentPropertyNames(); - - void doWithProperties(PropertyHandler

handler); - - void doWithAssociations(AssociationHandler

handler); -} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructorDiscoverer.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java similarity index 95% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructorDiscoverer.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java index 9b568737d..9f6d23381 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PreferredConstructorDiscoverer.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; @@ -21,8 +21,8 @@ import java.util.List; import org.springframework.core.LocalVariableTableParameterNameDiscoverer; import org.springframework.core.ParameterNameDiscoverer; -import org.springframework.data.mapping.model.PreferredConstructor; -import org.springframework.data.mapping.model.PreferredConstructor.Parameter; +import org.springframework.data.mapping.PreferredConstructor; +import org.springframework.data.mapping.PreferredConstructor.Parameter; import org.springframework.data.util.ClassTypeInformation; import org.springframework.data.util.TypeInformation; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/SimpleTypeHolder.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java similarity index 98% rename from spring-data-commons-core/src/main/java/org/springframework/data/mapping/SimpleTypeHolder.java rename to spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java index c431ff5a6..dc2949f9d 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/SimpleTypeHolder.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mapping; +package org.springframework.data.mapping.model; import java.util.Collections; import java.util.Date; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SpELAwareParameterValueProvider.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SpELAwareParameterValueProvider.java index 919f46225..1b6d2ca9f 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SpELAwareParameterValueProvider.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/SpELAwareParameterValueProvider.java @@ -15,7 +15,7 @@ */ package org.springframework.data.mapping.model; -import org.springframework.data.mapping.model.PreferredConstructor.Parameter; +import org.springframework.data.mapping.PreferredConstructor.Parameter; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/repository/config/AbstractRepositoryConfigDefinitionParser.java b/spring-data-commons-core/src/main/java/org/springframework/data/repository/config/AbstractRepositoryConfigDefinitionParser.java index 7fe9ef0d8..52211e57e 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/repository/config/AbstractRepositoryConfigDefinitionParser.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/repository/config/AbstractRepositoryConfigDefinitionParser.java @@ -66,7 +66,7 @@ public abstract class AbstractRepositoryConfigDefinitionParser person = ctx.addPersistentEntity(PersonWithId.class); + + ctx.setInitialEntitySet(Collections.singleton(PersonWithId.class)); + ctx.afterPropertiesSet(); + + PersistentEntity person = ctx.getPersistentEntity(PersonWithId.class); assertNotNull(person.getIdProperty()); assertEquals(String.class, person.getIdProperty().getType()); } @Test public void testAssociations() { - PersistentEntity person = ctx.addPersistentEntity(PersonWithChildren.class); - assertNotNull(person.getAssociations()); - - for (Association association : person.getAssociations()) { - assertEquals(Child.class, association.getInverse().getComponentType()); - } + + ctx.setInitialEntitySet(Collections.singleton(PersonWithChildren.class)); + ctx.afterPropertiesSet(); + + PersistentEntity person = ctx.getPersistentEntity(PersonWithChildren.class); + person.doWithAssociations(new AssociationHandler() { + public void doWithAssociation(Association association) { + assertEquals(Child.class, association.getInverse().getComponentType()); + } + }); } public interface SampleProperty extends PersistentProperty { diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PersistentEntitySpec.java b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PersistentEntitySpec.java new file mode 100644 index 000000000..af2af50e6 --- /dev/null +++ b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PersistentEntitySpec.java @@ -0,0 +1,18 @@ +package org.springframework.data.mapping; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + +/** + * Some test methods that define expected behaviour for {@link PersistentEntity} interface. Implementation test classes + * can simply extend that class to get the specs tested against an instance of their implementation. + * + * @author Oliver Gierke + */ +public abstract class PersistentEntitySpec { + + public static void assertInvariants(PersistentEntity entity) { + assertThat(entity.getName(), is(notNullValue())); + assertThat(entity.getPreferredConstructor(), is(notNullValue())); + } +} diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PreferredConstructorDiscovererUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PreferredConstructorDiscovererUnitTests.java index ff6d81d7b..d9a73fd87 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PreferredConstructorDiscovererUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/PreferredConstructorDiscovererUnitTests.java @@ -23,8 +23,8 @@ import java.util.List; import org.junit.Test; import org.springframework.data.annotation.PersistenceConstructor; -import org.springframework.data.mapping.model.PreferredConstructor; -import org.springframework.data.mapping.model.PreferredConstructor.Parameter; +import org.springframework.data.mapping.PreferredConstructor.Parameter; +import org.springframework.data.mapping.model.PreferredConstructorDiscoverer; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java index f5356a118..49c93fbb1 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.HashSet; import org.junit.Test; +import org.springframework.data.mapping.model.SimpleTypeHolder; /** * Unit tests for {@link SimpleTypeHolder}. diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java new file mode 100644 index 000000000..ef109b871 --- /dev/null +++ b/spring-data-commons-core/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java @@ -0,0 +1,37 @@ +package org.springframework.data.mapping.model; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + +import org.junit.Test; +import org.springframework.data.mapping.PersistentEntitySpec; +import org.springframework.data.mapping.PersistentProperty; +import org.springframework.data.mapping.Person; +import org.springframework.data.util.ClassTypeInformation; + +/** + * Unit test for {@link BasicPersistentEntity}. + * + * @author Oliver Gierke + */ +public class BasicPersistentEntityUnitTests> { + + @Test + public void assertInvariants() { + PersistentEntitySpec.assertInvariants(createEntity()); + } + + @Test(expected = IllegalArgumentException.class) + public void rejectsNullTypeInformation() { + new BasicPersistentEntity(null); + } + + @Test(expected = IllegalArgumentException.class) + public void rejectsNullProperty() { + createEntity().addPersistentProperty(null); + } + + private BasicPersistentEntity createEntity() { + return new BasicPersistentEntity(ClassTypeInformation.from(Person.class)); + } +} diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AbstractEntityInformationUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AbstractEntityInformationUnitTests.java similarity index 90% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AbstractEntityInformationUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AbstractEntityInformationUnitTests.java index 9de1a5fee..3f602a7fb 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AbstractEntityInformationUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AbstractEntityInformationUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; @@ -21,6 +21,8 @@ import static org.junit.Assert.*; import java.io.Serializable; import org.junit.Test; +import org.springframework.data.repository.core.EntityInformation; +import org.springframework.data.repository.core.support.AbstractEntityInformation; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AnnotationRepositoryMetadataUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AnnotationRepositoryMetadataUnitTests.java similarity index 84% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AnnotationRepositoryMetadataUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AnnotationRepositoryMetadataUnitTests.java index ed47f77b2..53bb1b1ec 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/AnnotationRepositoryMetadataUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/AnnotationRepositoryMetadataUnitTests.java @@ -13,12 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.junit.Assert.*; import org.junit.Test; import org.springframework.data.repository.RepositoryDefinition; +import org.springframework.data.repository.core.RepositoryMetadata; +import org.springframework.data.repository.core.support.AnnotationRepositoryMetadata; +import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/CustomAnnotationTransactionAttributeSourceUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/CustomAnnotationTransactionAttributeSourceUnitTests.java similarity index 87% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/CustomAnnotationTransactionAttributeSourceUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/CustomAnnotationTransactionAttributeSourceUnitTests.java index ed6ab47e4..cf564856b 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/CustomAnnotationTransactionAttributeSourceUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/CustomAnnotationTransactionAttributeSourceUnitTests.java @@ -13,13 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; -import org.springframework.data.repository.support.TransactionalRepositoryProxyPostProcessor.CustomAnnotationTransactionAttributeSource; +import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor; +import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor.CustomAnnotationTransactionAttributeSource; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAttribute; diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryInformationUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryInformationUnitTests.java similarity index 86% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryInformationUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryInformationUnitTests.java index 8acdfcf54..ed689acc2 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryInformationUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryInformationUnitTests.java @@ -1,4 +1,4 @@ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; @@ -11,7 +11,11 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.repository.CrudRepository; -import org.springframework.data.repository.support.DefaultRepositoryMetadataUnitTests.DummyGenericRepositorySupport; +import org.springframework.data.repository.core.RepositoryInformation; +import org.springframework.data.repository.core.RepositoryMetadata; +import org.springframework.data.repository.core.support.DefaultRepositoryInformation; +import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; +import org.springframework.data.repository.core.support.DefaultRepositoryMetadataUnitTests.DummyGenericRepositorySupport; /** * @author Oliver Gierke diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryMetadataUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryMetadataUnitTests.java similarity index 94% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryMetadataUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryMetadataUnitTests.java index bd0b916bd..eb6aca3df 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DefaultRepositoryMetadataUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/DefaultRepositoryMetadataUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.junit.Assert.*; @@ -23,6 +23,8 @@ import org.junit.Test; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.core.RepositoryMetadata; +import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; import org.springframework.data.repository.util.ClassUtils; diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/PersistableEntityInformationUnitTests.java similarity index 94% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/PersistableEntityInformationUnitTests.java index 289a4d22d..26402fec1 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/PersistableEntityInformationUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; @@ -24,6 +24,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.domain.Persistable; +import org.springframework.data.repository.core.support.PersistableEntityInformation; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/QueryExecuterMethodInterceptorUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/QueryExecuterMethodInterceptorUnitTests.java similarity index 85% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/QueryExecuterMethodInterceptorUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/QueryExecuterMethodInterceptorUnitTests.java index 5609cf3f9..a89c59e5b 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/QueryExecuterMethodInterceptorUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/QueryExecuterMethodInterceptorUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; @@ -22,8 +22,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import org.springframework.data.repository.core.RepositoryInformation; +import org.springframework.data.repository.core.support.RepositoryFactorySupport; +import org.springframework.data.repository.core.support.RepositoryFactorySupport.QueryExecuterMethodInterceptor; import org.springframework.data.repository.query.QueryLookupStrategy.Key; -import org.springframework.data.repository.support.RepositoryFactorySupport.QueryExecuterMethodInterceptor; /** * Unit test for {@link QueryExecuterMethodInterceptor}. diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryFactorySupportUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryFactorySupportUnitTests.java similarity index 92% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryFactorySupportUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryFactorySupportUnitTests.java index 0328f0403..ec9272a7c 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryFactorySupportUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryFactorySupportUnitTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; @@ -27,9 +27,13 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.core.EntityInformation; +import org.springframework.data.repository.core.RepositoryMetadata; +import org.springframework.data.repository.core.support.QueryCreationListener; +import org.springframework.data.repository.core.support.RepositoryFactorySupport; import org.springframework.data.repository.query.QueryLookupStrategy; -import org.springframework.data.repository.query.QueryLookupStrategy.Key; import org.springframework.data.repository.query.RepositoryQuery; +import org.springframework.data.repository.query.QueryLookupStrategy.Key; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java similarity index 93% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java index 4012bbd2d..81bdaa8e6 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessorUnitTests.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; @@ -29,6 +29,8 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; +import org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/TransactionRepositoryProxyPostProcessorUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/TransactionRepositoryProxyPostProcessorUnitTests.java similarity index 92% rename from spring-data-commons-core/src/test/java/org/springframework/data/repository/support/TransactionRepositoryProxyPostProcessorUnitTests.java rename to spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/TransactionRepositoryProxyPostProcessorUnitTests.java index 5d6cd7d24..483f84c73 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/TransactionRepositoryProxyPostProcessorUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/core/support/TransactionRepositoryProxyPostProcessorUnitTests.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.springframework.data.repository.support; +package org.springframework.data.repository.core.support; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.eq; @@ -32,6 +32,8 @@ import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.dao.support.PersistenceExceptionTranslationInterceptor; import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.data.repository.core.support.RepositoryProxyPostProcessor; +import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor; import org.springframework.transaction.interceptor.TransactionInterceptor; diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTest.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTest.java index 12f92f5f6..5035d62d8 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTest.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTest.java @@ -22,7 +22,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.domain.Pageable; -import org.springframework.data.repository.support.RepositoryMetadata; +import org.springframework.data.repository.core.RepositoryMetadata; /** * Unit tests for {@link QueryMethod}. diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java index b6ee1d139..3df6e0475 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java @@ -36,6 +36,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.core.EntityInformation; +import org.springframework.data.repository.core.support.RepositoryFactoryInformation; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java index 3fe64bb64..3fad4b989 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java @@ -34,6 +34,8 @@ import org.mockito.runners.MockitoJUnitRunner; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.context.ApplicationContext; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.core.EntityInformation; +import org.springframework.data.repository.core.support.RepositoryFactoryInformation; /** diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorUnitTests.java index 54d5340b1..c5504b14e 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorUnitTests.java @@ -29,6 +29,7 @@ import org.mockito.runners.MockitoJUnitRunner; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.data.domain.Persistable; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.core.EntityInformation; /**