Skip to content

Commit 38d440a

Browse files
committed
fallback to couchbaseEnv default env reference if none explicitely set
1 parent 14e08e9 commit 38d440a

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/main/java/org/springframework/data/couchbase/config/CouchbaseClusterParser.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
* Such a definition can be tuned by either referencing a {@link CouchbaseEnvironment} via
3838
* the {@value #CLUSTER_ENVIRONMENT_REF} attribute or define a custom environment inline via
3939
* the <{@value #CLUSTER_ENVIRONMENT_TAG}> tag (not recommended, environments should be
40-
* shared as possible).
40+
* shared as possible). If no environment reference or inline description is provided, the
41+
* default environment reference {@value BeanNames#COUCHBASE_ENV} is used.
4142
*
4243
* To bootstrap the connection, one can provide IPs or hostnames of nodes to connect to
4344
* via 1 or more <{@value #CLUSTER_NODE_TAG}> tags.
@@ -117,6 +118,10 @@ protected void doParse(final Element element, final BeanDefinitionBuilder bean)
117118
}
118119
}
119120

121+
/**
122+
* @return true if a custom environment was parsed and injected (either reference or inline), false if
123+
* the default environment reference was used.
124+
*/
120125
protected boolean parseEnvironment(BeanDefinitionBuilder clusterBuilder, Element clusterElement) {
121126
//any inline environment description would take precedence over a reference
122127
Element envElement = DomUtils.getChildElementByTagName(clusterElement, CLUSTER_ENVIRONMENT_TAG);
@@ -131,6 +136,9 @@ protected boolean parseEnvironment(BeanDefinitionBuilder clusterBuilder, Element
131136
injectEnvReference(clusterBuilder, envRef);
132137
return true;
133138
}
139+
140+
//if no custom value provided, consider it a reference to the default bean for Couchbase Environment
141+
injectEnvReference(clusterBuilder, BeanNames.COUCHBASE_ENV);
134142
return false;
135143
}
136144

src/test/java/org/springframework/data/couchbase/config/CouchbaseClusterParserTest.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,35 @@ public static void setUp() {
5353
public static void tearDown() {
5454
}
5555

56+
@Test
57+
public void testClusterWithoutSpecificEnv() {
58+
BeanDefinition def = factory.getBeanDefinition("clusterDefault");
59+
60+
assertThat(def, is(notNullValue()));
61+
assertThat(def.getConstructorArgumentValues().getArgumentCount(), is(equalTo(1)));
62+
assertThat(def.getPropertyValues().size(), is(equalTo(0)));
63+
assertThat(def.getFactoryMethodName(), is(equalTo("create")));
64+
65+
ConstructorArgumentValues.ValueHolder holder = def.getConstructorArgumentValues()
66+
.getArgumentValue(0, CouchbaseEnvironment.class);
67+
68+
assertThat(holder.getValue(), instanceOf(RuntimeBeanReference.class));
69+
RuntimeBeanReference envRef = (RuntimeBeanReference) holder.getValue();
70+
71+
assertThat(envRef.getBeanName(), is(equalTo("couchbaseEnv")));
72+
}
73+
5674
@Test
5775
public void testClusterWithNodes() {
5876
BeanDefinition def = factory.getBeanDefinition("clusterWithNodes");
5977

6078
assertThat(def, is(notNullValue()));
61-
assertThat(def.getConstructorArgumentValues().getArgumentCount(), is(equalTo(1)));
79+
assertThat(def.getConstructorArgumentValues().getArgumentCount(), is(equalTo(2)));
6280
assertThat(def.getPropertyValues().size(), is(equalTo(0)));
6381
assertThat(def.getFactoryMethodName(), is(equalTo("create")));
6482

6583
ConstructorArgumentValues.ValueHolder holder = def.getConstructorArgumentValues()
66-
.getArgumentValue(0, List.class);
84+
.getArgumentValue(1, List.class);
6785
assertThat(holder.getValue(), is(instanceOf(List.class)));
6886
List nodes = (List<String>) holder.getValue();
6987

0 commit comments

Comments
 (0)