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 {} }