Skip to content

Commit fad9a56

Browse files
committed
DATAES-136 - added support for basePackage configuration for @EnableElasticsearchRepositories
1 parent cf3c4f7 commit fad9a56

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

src/main/java/org/springframework/data/elasticsearch/repository/config/ElasticsearchRepositoryConfigExtension.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,16 @@
1515
*/
1616
package org.springframework.data.elasticsearch.repository.config;
1717

18+
import java.lang.annotation.Annotation;
19+
import java.util.Arrays;
20+
import java.util.Collection;
21+
import java.util.Collections;
22+
1823
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
1924
import org.springframework.core.annotation.AnnotationAttributes;
25+
import org.springframework.data.elasticsearch.annotations.Document;
26+
import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository;
27+
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
2028
import org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean;
2129
import org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource;
2230
import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport;
@@ -72,4 +80,22 @@ public void postProcess(BeanDefinitionBuilder builder, XmlRepositoryConfiguratio
7280
Element element = config.getElement();
7381
builder.addPropertyReference("elasticsearchOperations", element.getAttribute("elasticsearch-template-ref"));
7482
}
83+
84+
/*
85+
* (non-Javadoc)
86+
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getIdentifyingAnnotations()
87+
*/
88+
@Override
89+
protected Collection<Class<? extends Annotation>> getIdentifyingAnnotations() {
90+
return Collections.<Class<? extends Annotation>>singleton(Document.class);
91+
}
92+
93+
/*
94+
* (non-Javadoc)
95+
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getIdentifyingTypes()
96+
*/
97+
@Override
98+
protected Collection<Class<?>> getIdentifyingTypes() {
99+
return Arrays.<Class<?>>asList(ElasticsearchRepository.class, ElasticsearchCrudRepository.class);
100+
}
75101
}

src/test/java/org/springframework/data/elasticsearch/config/EnableElasticsearchRepositoriesTests.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@
2121

2222
import org.junit.Test;
2323
import org.junit.runner.RunWith;
24+
import org.springframework.beans.BeansException;
2425
import org.springframework.beans.factory.annotation.Autowired;
26+
import org.springframework.context.ApplicationContext;
27+
import org.springframework.context.ApplicationContextAware;
2528
import org.springframework.context.annotation.Bean;
2629
import org.springframework.context.annotation.Configuration;
2730
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
2831
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
2932
import org.springframework.data.elasticsearch.repositories.sample.SampleElasticsearchRepository;
33+
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
3034
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
3135
import org.springframework.test.context.ContextConfiguration;
3236
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -37,7 +41,14 @@
3741
*/
3842
@RunWith(SpringJUnit4ClassRunner.class)
3943
@ContextConfiguration
40-
public class EnableElasticsearchRepositoriesTests {
44+
public class EnableElasticsearchRepositoriesTests implements ApplicationContextAware {
45+
46+
ApplicationContext context;
47+
48+
@Override
49+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
50+
this.context = applicationContext;
51+
}
4152

4253
@Configuration
4354
@EnableElasticsearchRepositories(basePackages = "org.springframework.data.elasticsearch.repositories.sample")
@@ -56,4 +67,16 @@ public ElasticsearchOperations elasticsearchTemplate() {
5667
public void bootstrapsRepository() {
5768
assertThat(repository, is(notNullValue()));
5869
}
70+
71+
@Test
72+
public void shouldScanSelectedPackage() {
73+
//given
74+
75+
//when
76+
String[] beanNamesForType = context.getBeanNamesForType(ElasticsearchRepository.class);
77+
78+
//then
79+
assertThat(beanNamesForType.length, is(1));
80+
assertThat(beanNamesForType[0], is("sampleElasticsearchRepository"));
81+
}
5982
}

0 commit comments

Comments
 (0)