DATACOUCH-148 - Allow to configure repository queries consistency globally.
The consistency to apply on generated view queries (Stale) and N1QL queries (ScanConsistency) can now be chosen via the configuration, through a more abstract Consistency enumeration. It is accessed from the CouchbaseOperations interface but is used in the repository only. In xml, the consistency attribute is on the couchbase:template element (string value of the enum to be passed in). Documentation has been amended to describe this feature.
This commit is contained in:
@@ -20,6 +20,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration;
|
||||
import org.springframework.data.couchbase.core.CouchbaseTemplate;
|
||||
import org.springframework.data.couchbase.core.WriteResultChecking;
|
||||
import org.springframework.data.couchbase.core.view.Consistency;
|
||||
|
||||
@Configuration
|
||||
public class UnitTestApplicationConfig extends AbstractCouchbaseConfiguration {
|
||||
@@ -73,4 +74,9 @@ public class UnitTestApplicationConfig extends AbstractCouchbaseConfiguration {
|
||||
template.setWriteResultChecking(WriteResultChecking.LOG);
|
||||
return template;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Consistency getDefaultConsistency() {
|
||||
return Consistency.READ_YOUR_OWN_WRITES;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,11 +11,16 @@ import com.couchbase.client.java.document.json.JsonArray;
|
||||
import com.couchbase.client.java.document.json.JsonObject;
|
||||
import com.couchbase.client.java.query.ParameterizedQuery;
|
||||
import com.couchbase.client.java.query.Query;
|
||||
import com.couchbase.client.java.query.QueryParams;
|
||||
import com.couchbase.client.java.query.SimpleQuery;
|
||||
import com.couchbase.client.java.query.Statement;
|
||||
import com.couchbase.client.java.query.consistency.ScanConsistency;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Matchers;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import org.springframework.data.couchbase.core.CouchbaseOperations;
|
||||
import org.springframework.data.repository.query.ParameterAccessor;
|
||||
import org.springframework.data.repository.query.QueryMethod;
|
||||
|
||||
public class AbstractN1qlBasedQueryTest {
|
||||
@@ -23,12 +28,12 @@ public class AbstractN1qlBasedQueryTest {
|
||||
@Test
|
||||
public void testEmptyArgumentsShouldProduceSimpleQuery() throws Exception {
|
||||
Statement st = select("*");
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, JsonArray.empty());
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, JsonArray.empty(), ScanConsistency.NOT_BOUNDED);
|
||||
JsonObject queryObject = query.n1ql();
|
||||
|
||||
assertTrue(query instanceof SimpleQuery);
|
||||
assertEquals(st.toString(), query.statement().toString());
|
||||
assertNull(query.params());
|
||||
assertEquals(QueryParams.build().consistency(ScanConsistency.NOT_BOUNDED), query.params());
|
||||
assertFalse(queryObject.containsKey("args"));
|
||||
}
|
||||
|
||||
@@ -38,12 +43,12 @@ public class AbstractN1qlBasedQueryTest {
|
||||
List<Object> params = new ArrayList<Object>(2);
|
||||
params.add("test");
|
||||
JsonArray placeholderValues = JsonArray.from(params);
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues);
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues, ScanConsistency.NOT_BOUNDED);
|
||||
JsonObject queryObject = query.n1ql();
|
||||
|
||||
assertTrue(query instanceof ParameterizedQuery);
|
||||
assertEquals(st.toString(), query.statement().toString());
|
||||
assertNull(query.params());
|
||||
assertEquals(QueryParams.build().consistency(ScanConsistency.NOT_BOUNDED), query.params());
|
||||
assertTrue(queryObject.containsKey("args"));
|
||||
JsonArray args = queryObject.getArray("args");
|
||||
assertEquals(1, args.size());
|
||||
@@ -57,12 +62,12 @@ public class AbstractN1qlBasedQueryTest {
|
||||
params.add(123L);
|
||||
params.add("test");
|
||||
JsonArray placeholderValues = JsonArray.from(params);
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues);
|
||||
Query query = AbstractN1qlBasedQuery.buildQuery(st, placeholderValues, ScanConsistency.NOT_BOUNDED);
|
||||
JsonObject queryObject = query.n1ql();
|
||||
|
||||
assertTrue(query instanceof ParameterizedQuery);
|
||||
assertEquals(st.toString(), query.statement().toString());
|
||||
assertNull(query.params());
|
||||
assertEquals(QueryParams.build().consistency(ScanConsistency.NOT_BOUNDED), query.params());
|
||||
assertTrue(queryObject.containsKey("args"));
|
||||
JsonArray args = queryObject.getArray("args");
|
||||
assertEquals(2, args.size());
|
||||
|
||||
Reference in New Issue
Block a user