DATACOUCH-279 - Re-add AbstractCouchbaseDataConfiguration

Motivation
----------
AbstractCouchbaseDataConfiguration was removed and
AbstractCouchbaseConfiguration was made the only configuration support
which implemented CouchbaseConfigurer. This broke integration with
Spring boot as they used CouchbaseConfigurer to auto configure client
initialization properties.

Changes
-------
Bring back support for AbstractCouchbaseDataConfiguration which allows the use
of CouchbaseConfigurer. Also added a similar configuration support for reactive
data repositories. Common beans between reactive and blocking are implemented
in CouchbaseConfigurationSupport class. The existing tests in
AbstractCouchbaseDataConfigurationTest does test this scenario. However the
previous commit had also changed the test because of the unawareness of spring
boot integration.

Results
-------
It is now possible to configure SDC with CouchbaseConfigurer instead of
only having to extend from AbstractCouchbaseConfiguration.
This commit is contained in:
Subhashni Balakrishnan
2017-02-07 01:15:00 -08:00
committed by Simon Baslé
parent c26053868c
commit 1c33ccc4c8
6 changed files with 487 additions and 403 deletions

View File

@@ -16,8 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.annotation.Id;
import org.springframework.data.couchbase.core.CouchbaseTemplate;
import org.springframework.data.couchbase.core.WriteResultChecking;
import org.springframework.data.couchbase.repository.CouchbaseRepository;
import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories;
import org.springframework.stereotype.Repository;
@@ -25,15 +23,17 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* This test case demonstrates that the {@link AbstractCouchbaseConfiguration} can take its SDK beans
* This test case demonstrates that the {@link AbstractCouchbaseDataConfiguration} can take its SDK beans
* from a sibling {@link Configuration}.
*
* Tests DATACOUCH-279
*
* @author Simon Baslé
*/
@SuppressWarnings("SpringJavaAutowiringInspection")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class AbstractCouchbaseConfigurationTest {
public class AbstractCouchbaseDataConfigurationTest {
@Autowired
ItemRepository repository;
@@ -74,8 +74,8 @@ public class AbstractCouchbaseConfigurationTest {
}
@Configuration
@EnableCouchbaseRepositories(basePackageClasses = AbstractCouchbaseConfigurationTest.class, considerNestedRepositories = true)
abstract static class Config extends AbstractCouchbaseConfiguration {
@EnableCouchbaseRepositories(basePackageClasses = AbstractCouchbaseDataConfigurationTest.class, considerNestedRepositories = true)
static class Config extends AbstractCouchbaseDataConfiguration {
@Autowired
Cluster c;
@@ -89,25 +89,6 @@ public class AbstractCouchbaseConfigurationTest {
@Autowired
CouchbaseEnvironment e;
//TODO maybe create the bucket if doesn't exist
@Override
protected CouchbaseEnvironment getEnvironment() {
return DefaultCouchbaseEnvironment.builder()
.connectTimeout(10000)
.kvTimeout(10000)
.queryTimeout(10000)
.viewTimeout(10000)
.build();
}
@Override
public CouchbaseTemplate couchbaseTemplate() throws Exception {
CouchbaseTemplate template = super.couchbaseTemplate();
template.setWriteResultChecking(WriteResultChecking.LOG);
return template;
}
@Override
protected CouchbaseConfigurer couchbaseConfigurer() {
return new TestCouchbaseConfigurer(e, c, ci, b);
@@ -180,4 +161,4 @@ public class AbstractCouchbaseConfigurationTest {
@Repository
interface ItemRepository extends CouchbaseRepository<Item, String> {}
}
}