From a8a37d4a3242cb8f911884e401cd85649c25459b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 5 May 2015 12:20:30 +0200 Subject: [PATCH] DATAKV-98 - Adapt to changes in Spring Data Commons. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tweaked method signatures in KeyValueRepositoryFactory after some signature changes in Spring Data Commons. Use newly introduced getTragetRepositoryViaReflection(…) to obtain the repository instance via the super class. Added repositoryBaseClass() attribute to @EnableMapRepositories. Related tickets: DATACMNS-542. --- .../support/KeyValueRepositoryFactory.java | 14 ++++---------- .../repository/config/EnableMapRepositories.java | 8 ++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java b/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java index 2575bbf..919b50c 100644 --- a/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java +++ b/src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java @@ -28,6 +28,7 @@ import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.querydsl.QueryDslPredicateExecutor; import org.springframework.data.repository.core.EntityInformation; import org.springframework.data.repository.core.NamedQueries; +import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.PersistentEntityInformation; import org.springframework.data.repository.core.support.RepositoryFactorySupport; @@ -38,7 +39,6 @@ import org.springframework.data.repository.query.QueryMethod; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; /** * {@link RepositoryFactorySupport} specific of handing @@ -101,16 +101,10 @@ public class KeyValueRepositoryFactory extends RepositoryFactorySupport { * @see org.springframework.data.repository.core.support.RepositoryFactorySupport#getTargetRepository(org.springframework.data.repository.core.RepositoryMetadata) */ @Override - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected Object getTargetRepository(RepositoryMetadata metadata) { + protected Object getTargetRepository(RepositoryInformation repositoryInformation) { - EntityInformation entityInformation = getEntityInformation(metadata.getDomainType()); - - if (ClassUtils.isAssignable(QueryDslPredicateExecutor.class, metadata.getRepositoryInterface())) { - return new QuerydslKeyValueRepository(entityInformation, keyValueOperations); - } - - return new SimpleKeyValueRepository(entityInformation, keyValueOperations); + EntityInformation entityInformation = getEntityInformation(repositoryInformation.getDomainType()); + return super.getTargetRepositoryViaReflection(repositoryInformation, entityInformation, keyValueOperations); } /* diff --git a/src/main/java/org/springframework/data/map/repository/config/EnableMapRepositories.java b/src/main/java/org/springframework/data/map/repository/config/EnableMapRepositories.java index f633efa..93072a2 100644 --- a/src/main/java/org/springframework/data/map/repository/config/EnableMapRepositories.java +++ b/src/main/java/org/springframework/data/map/repository/config/EnableMapRepositories.java @@ -33,6 +33,7 @@ import org.springframework.data.keyvalue.core.KeyValueTemplate; import org.springframework.data.keyvalue.repository.config.QueryCreatorType; import org.springframework.data.keyvalue.repository.query.SpelQueryCreator; import org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactoryBean; +import org.springframework.data.repository.config.DefaultRepositoryBaseClass; import org.springframework.data.repository.query.QueryLookupStrategy; import org.springframework.data.repository.query.QueryLookupStrategy.Key; @@ -113,6 +114,13 @@ public @interface EnableMapRepositories { */ Class repositoryFactoryBeanClass() default KeyValueRepositoryFactoryBean.class; + /** + * Configure the repository base class to be used to create repository proxies for this particular configuration. + * + * @return + */ + Class repositoryBaseClass() default DefaultRepositoryBaseClass.class; + /** * Configures the name of the {@link KeyValueOperations} bean to be used with the repositories detected. *