Skip to content

Commit f8b774a

Browse files
odrotbohmmp911de
authored andcommitted
DATAMONGO-1444 - Adapt to new changes in reactive repository configuration.
We now use the newly introduced ….useRepositoryConfiguration(…) in the module specific RepositoryConfigurationExtension implementations to distinguish between reactive and non-reactive repositories. Removed RepositoryType class as it was only used by the previous repository typ detection.
1 parent 3b92490 commit f8b774a

File tree

3 files changed

+13
-159
lines changed

3 files changed

+13
-159
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.java

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,24 @@
1818
import java.lang.annotation.Annotation;
1919
import java.util.Collection;
2020
import java.util.Collections;
21-
import java.util.stream.Collectors;
2221

2322
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2423
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2524
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2625
import org.springframework.beans.factory.support.RootBeanDefinition;
2726
import org.springframework.core.annotation.AnnotationAttributes;
28-
import org.springframework.core.io.ResourceLoader;
2927
import org.springframework.data.config.ParsingUtils;
3028
import org.springframework.data.mongodb.config.BeanNames;
3129
import org.springframework.data.mongodb.core.mapping.Document;
3230
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
3331
import org.springframework.data.mongodb.repository.MongoRepository;
3432
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
3533
import org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource;
36-
import org.springframework.data.repository.config.RepositoryConfiguration;
3734
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
3835
import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport;
3936
import org.springframework.data.repository.config.RepositoryConfigurationSource;
4037
import org.springframework.data.repository.config.XmlRepositoryConfigurationSource;
41-
import org.springframework.data.repository.util.ReactiveWrappers;
38+
import org.springframework.data.repository.core.RepositoryMetadata;
4239
import org.w3c.dom.Element;
4340

4441
/**
@@ -141,23 +138,12 @@ public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConf
141138
}
142139
}
143140

141+
/*
142+
* (non-Javadoc)
143+
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#useRepositoryConfiguration(org.springframework.data.repository.core.RepositoryMetadata)
144+
*/
144145
@Override
145-
public <T extends RepositoryConfigurationSource> Collection<RepositoryConfiguration<T>> getRepositoryConfigurations(
146-
T configSource, ResourceLoader loader, boolean strictMatchesOnly) {
147-
148-
Collection<RepositoryConfiguration<T>> repositoryConfigurations = super.getRepositoryConfigurations(configSource,
149-
loader, strictMatchesOnly);
150-
151-
if (ReactiveWrappers.isAvailable()) {
152-
153-
return repositoryConfigurations.stream().filter(configuration -> {
154-
155-
Class<?> repositoryInterface = loadRepositoryInterface(configuration, loader);
156-
return !RepositoryType.isReactiveRepository(repositoryInterface);
157-
158-
}).collect(Collectors.toList());
159-
}
160-
161-
return repositoryConfigurations;
146+
protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) {
147+
return !metadata.isReactiveRepository();
162148
}
163149
}

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoryConfigurationExtension.java

Lines changed: 6 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -16,45 +16,33 @@
1616

1717
package org.springframework.data.mongodb.repository.config;
1818

19-
import java.lang.annotation.Annotation;
2019
import java.util.Collection;
2120
import java.util.Collections;
22-
import java.util.stream.Collectors;
2321

24-
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2522
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
26-
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
27-
import org.springframework.beans.factory.support.RootBeanDefinition;
2823
import org.springframework.core.annotation.AnnotationAttributes;
29-
import org.springframework.core.io.ResourceLoader;
3024
import org.springframework.data.config.ParsingUtils;
31-
import org.springframework.data.mongodb.config.BeanNames;
32-
import org.springframework.data.mongodb.core.mapping.Document;
33-
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
3425
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
3526
import org.springframework.data.mongodb.repository.support.ReactiveMongoRepositoryFactoryBean;
3627
import org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource;
37-
import org.springframework.data.repository.config.RepositoryConfiguration;
3828
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
39-
import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport;
40-
import org.springframework.data.repository.config.RepositoryConfigurationSource;
4129
import org.springframework.data.repository.config.XmlRepositoryConfigurationSource;
30+
import org.springframework.data.repository.core.RepositoryMetadata;
4231
import org.w3c.dom.Element;
4332

4433
/**
4534
* Reactive {@link RepositoryConfigurationExtension} for MongoDB.
4635
*
4736
* @author Mark Paluch
4837
* @author Christoph Strobl
38+
* @author Oliver Gierke
4939
* @since 2.0
5040
*/
51-
public class ReactiveMongoRepositoryConfigurationExtension extends RepositoryConfigurationExtensionSupport {
41+
class ReactiveMongoRepositoryConfigurationExtension extends MongoRepositoryConfigurationExtension {
5242

5343
private static final String MONGO_TEMPLATE_REF = "reactive-mongo-template-ref";
5444
private static final String CREATE_QUERY_INDEXES = "create-query-indexes";
5545

56-
private boolean fallbackMappingContextCreated = false;
57-
5846
/*
5947
* (non-Javadoc)
6048
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getModuleName()
@@ -64,15 +52,6 @@ public String getModuleName() {
6452
return "Reactive MongoDB";
6553
}
6654

67-
/*
68-
* (non-Javadoc)
69-
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getModulePrefix()
70-
*/
71-
@Override
72-
protected String getModulePrefix() {
73-
return "mongo";
74-
}
75-
7655
/*
7756
* (non-Javadoc)
7857
* @see org.springframework.data.repository.config.RepositoryConfigurationExtension#getRepositoryFactoryClassName()
@@ -81,15 +60,6 @@ public String getRepositoryFactoryClassName() {
8160
return ReactiveMongoRepositoryFactoryBean.class.getName();
8261
}
8362

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.singleton(Document.class);
91-
}
92-
9363
/*
9464
* (non-Javadoc)
9565
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getIdentifyingTypes()
@@ -99,18 +69,6 @@ protected Collection<Class<?>> getIdentifyingTypes() {
9969
return Collections.singleton(ReactiveMongoRepository.class);
10070
}
10171

102-
/*
103-
* (non-Javadoc)
104-
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#postProcess(org.springframework.beans.factory.support.BeanDefinitionBuilder, org.springframework.data.repository.config.RepositoryConfigurationSource)
105-
*/
106-
@Override
107-
public void postProcess(BeanDefinitionBuilder builder, RepositoryConfigurationSource source) {
108-
109-
if (fallbackMappingContextCreated) {
110-
builder.addPropertyReference("mappingContext", BeanNames.MAPPING_CONTEXT_BEAN_NAME);
111-
}
112-
}
113-
11472
/*
11573
* (non-Javadoc)
11674
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#postProcess(org.springframework.beans.factory.support.BeanDefinitionBuilder, org.springframework.data.repository.config.XmlRepositoryConfigurationSource)
@@ -139,32 +97,10 @@ public void postProcess(BeanDefinitionBuilder builder, AnnotationRepositoryConfi
13997

14098
/*
14199
* (non-Javadoc)
142-
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#registerBeansForRoot(org.springframework.beans.factory.support.BeanDefinitionRegistry, org.springframework.data.repository.config.RepositoryConfigurationSource)
100+
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#useRepositoryConfiguration(org.springframework.data.repository.core.RepositoryMetadata)
143101
*/
144102
@Override
145-
public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource configurationSource) {
146-
147-
super.registerBeansForRoot(registry, configurationSource);
148-
149-
if (!registry.containsBeanDefinition(BeanNames.MAPPING_CONTEXT_BEAN_NAME)) {
150-
151-
RootBeanDefinition definition = new RootBeanDefinition(MongoMappingContext.class);
152-
definition.setRole(AbstractBeanDefinition.ROLE_INFRASTRUCTURE);
153-
definition.setSource(configurationSource.getSource());
154-
155-
registry.registerBeanDefinition(BeanNames.MAPPING_CONTEXT_BEAN_NAME, definition);
156-
}
157-
}
158-
159-
@Override
160-
public <T extends RepositoryConfigurationSource> Collection<RepositoryConfiguration<T>> getRepositoryConfigurations(
161-
T configSource, ResourceLoader loader, boolean strictMatchesOnly) {
162-
163-
Collection<RepositoryConfiguration<T>> repositoryConfigurations = super.getRepositoryConfigurations(configSource,
164-
loader, strictMatchesOnly);
165-
166-
return repositoryConfigurations.stream()
167-
.filter(configuration -> RepositoryType.isReactiveRepository(loadRepositoryInterface(configuration, loader)))
168-
.collect(Collectors.toList());
103+
protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) {
104+
return metadata.isReactiveRepository();
169105
}
170106
}

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/RepositoryType.java

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)