From cd6b2c09c6684ffd7deecf143ba3f4b1e1593555 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Mon, 13 Jul 2015 17:39:49 +0200 Subject: [PATCH] DATACMNS-542 - Be more lenient about simplified way to customize repository base classes. We now leniently return null for the repository base class name from the AnnotationRepositoryConfigurationSource to make sure Spring Data modules compile against Spring Data Commons 1.10 continue to work on 1.11 without having the annotation attribute added. --- ...notationRepositoryConfigurationSource.java | 4 +++ ...epositoryConfigurationSourceUnitTests.java | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/main/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSource.java b/src/main/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSource.java index 4702bd0d3..49cb77933 100644 --- a/src/main/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSource.java +++ b/src/main/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSource.java @@ -221,6 +221,10 @@ public class AnnotationRepositoryConfigurationSource extends RepositoryConfigura @Override public String getRepositoryBaseClassName() { + if (!attributes.containsKey(REPOSITORY_BASE_CLASS)) { + return null; + } + Class repositoryBaseClass = attributes.getClass(REPOSITORY_BASE_CLASS); return DefaultRepositoryBaseClass.class.equals(repositoryBaseClass) ? null : repositoryBaseClass.getName(); } diff --git a/src/test/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSourceUnitTests.java b/src/test/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSourceUnitTests.java index 94a719536..793a6a312 100644 --- a/src/test/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSourceUnitTests.java +++ b/src/test/java/org/springframework/data/repository/config/AnnotationRepositoryConfigurationSourceUnitTests.java @@ -18,6 +18,8 @@ package org.springframework.data.repository.config; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Collection; import org.junit.Before; @@ -146,6 +148,19 @@ public class AnnotationRepositoryConfigurationSourceUnitTests { assertThat(getConfigSource(DefaultConfiguration.class).usesExplicitFilters(), is(false)); } + /** + * @see DATACMNS-542 + */ + @Test + public void ignoresMissingRepositoryBaseClassNameAttribute() { + + AnnotationMetadata metadata = new StandardAnnotationMetadata(ConfigWithSampleAnnotation.class, true); + RepositoryConfigurationSource configurationSource = new AnnotationRepositoryConfigurationSource(metadata, + SampleAnnotation.class, resourceLoader, environment); + + assertThat(configurationSource.getRepositoryBaseClassName(), is(nullValue())); + } + private AnnotationRepositoryConfigurationSource getConfigSource(Class type) { AnnotationMetadata metadata = new StandardAnnotationMetadata(type, true); @@ -165,4 +180,15 @@ public class AnnotationRepositoryConfigurationSourceUnitTests { @EnableRepositories(excludeFilters = { @Filter(Primary.class) }) static class ConfigurationWithExplicitFilter {} + + @Retention(RetentionPolicy.RUNTIME) + @interface SampleAnnotation { + + Filter[] includeFilters() default {}; + + Filter[] excludeFilters() default {}; + } + + @SampleAnnotation + static class ConfigWithSampleAnnotation {} }