Skip to content

Commit 8c65982

Browse files
authored
Revert "DATACOUCH-550 - Refactored the usage of CouchbasePersistentEntityIndexCreator. (#298)" (#1087)
This reverts commit 80bae4b. Co-authored-by: mikereiche <michael.reiche@couchbase.com>
1 parent 79e82c2 commit 8c65982

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

src/main/java/org/springframework/data/couchbase/core/CouchbaseTemplate.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,17 @@
1919
import org.springframework.beans.BeansException;
2020
import org.springframework.context.ApplicationContext;
2121
import org.springframework.context.ApplicationContextAware;
22+
import org.springframework.context.ConfigurableApplicationContext;
2223
import org.springframework.data.couchbase.CouchbaseClientFactory;
2324
import org.springframework.data.couchbase.core.convert.CouchbaseConverter;
2425
import org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService;
2526
import org.springframework.data.couchbase.core.convert.translation.TranslationService;
27+
import org.springframework.data.couchbase.core.index.CouchbasePersistentEntityIndexCreator;
28+
import org.springframework.data.couchbase.core.mapping.CouchbaseMappingContext;
29+
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentEntity;
30+
import org.springframework.data.couchbase.core.mapping.CouchbasePersistentProperty;
31+
import org.springframework.data.mapping.context.MappingContext;
32+
import org.springframework.lang.Nullable;
2633

2734
import com.couchbase.client.java.Collection;
2835

@@ -40,7 +47,9 @@ public class CouchbaseTemplate implements CouchbaseOperations, ApplicationContex
4047
private final CouchbaseClientFactory clientFactory;
4148
private final CouchbaseConverter converter;
4249
private final CouchbaseTemplateSupport templateSupport;
50+
private final MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext;
4351
private final ReactiveCouchbaseTemplate reactiveCouchbaseTemplate;
52+
private @Nullable CouchbasePersistentEntityIndexCreator indexCreator;
4453

4554
public CouchbaseTemplate(final CouchbaseClientFactory clientFactory, final CouchbaseConverter converter) {
4655
this(clientFactory, converter, new JacksonTranslationService());
@@ -52,6 +61,14 @@ public CouchbaseTemplate(final CouchbaseClientFactory clientFactory, final Couch
5261
this.converter = converter;
5362
this.templateSupport = new CouchbaseTemplateSupport(converter, translationService);
5463
this.reactiveCouchbaseTemplate = new ReactiveCouchbaseTemplate(clientFactory, converter, translationService);
64+
65+
this.mappingContext = this.converter.getMappingContext();
66+
if (mappingContext instanceof CouchbaseMappingContext) {
67+
CouchbaseMappingContext cmc = (CouchbaseMappingContext) mappingContext;
68+
if (cmc.isAutoIndexCreation()) {
69+
indexCreator = new CouchbasePersistentEntityIndexCreator(cmc, this);
70+
}
71+
}
5572
}
5673

5774
@Override
@@ -140,7 +157,28 @@ public ReactiveCouchbaseTemplate reactive() {
140157

141158
@Override
142159
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
160+
prepareIndexCreator(applicationContext);
143161
templateSupport.setApplicationContext(applicationContext);
144162
reactiveCouchbaseTemplate.setApplicationContext(applicationContext);
145163
}
164+
165+
private void prepareIndexCreator(final ApplicationContext context) {
166+
String[] indexCreators = context.getBeanNamesForType(CouchbasePersistentEntityIndexCreator.class);
167+
168+
for (String creator : indexCreators) {
169+
CouchbasePersistentEntityIndexCreator creatorBean = context.getBean(creator,
170+
CouchbasePersistentEntityIndexCreator.class);
171+
if (creatorBean.isIndexCreatorFor(mappingContext)) {
172+
return;
173+
}
174+
}
175+
176+
if (context instanceof ConfigurableApplicationContext && indexCreator != null) {
177+
((ConfigurableApplicationContext) context).addApplicationListener(indexCreator);
178+
if (mappingContext instanceof CouchbaseMappingContext) {
179+
CouchbaseMappingContext cmc = (CouchbaseMappingContext) mappingContext;
180+
cmc.setIndexCreator(indexCreator);
181+
}
182+
}
183+
}
146184
}

src/test/java/org/springframework/data/couchbase/core/CustomTypeKeyIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class CustomTypeKeyIntegrationTests extends ClusterAwareIntegrationTests
4848

4949
@Test
5050
void saveSimpleEntityCorrectlyWithDifferentTypeKey() {
51-
clientFactory.getBucket().waitUntilReady(Duration.ofSeconds(5));
51+
clientFactory.getBucket().waitUntilReady(Duration.ofSeconds(10));
5252

5353
User user = new User(UUID.randomUUID().toString(), "firstname", "lastname");
5454
// When using 'mocked', this call runs fine when the test class is ran by itself,

0 commit comments

Comments
 (0)