Skip to content

Commit 0db372e

Browse files
committed
#98 - Polishing.
Formatting. Changed generics to avoid unchecked casting. Avoided abbreviated variable name. Simplified handling of absent keys at ConnectionFactory lookup.
1 parent ea460bb commit 0db372e

File tree

4 files changed

+52
-53
lines changed

4 files changed

+52
-53
lines changed

src/main/java/org/springframework/data/r2dbc/connectionfactory/lookup/AbstractRoutingConnectionFactory.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
* ConnectionFactory} if configured.
3939
*
4040
* @author Mark Paluch
41+
* @author Jens Schauder
4142
* @see #setTargetConnectionFactories
4243
* @see #setDefaultTargetConnectionFactory
4344
* @see #determineCurrentLookupKey()
@@ -46,7 +47,7 @@ public abstract class AbstractRoutingConnectionFactory implements ConnectionFact
4647

4748
private static final Object FALLBACK_MARKER = new Object();
4849

49-
private @Nullable Map<Object, Object> targetConnectionFactories;
50+
private @Nullable Map<?, ?> targetConnectionFactories;
5051

5152
private @Nullable Object defaultTargetConnectionFactory;
5253

@@ -67,9 +68,8 @@ public abstract class AbstractRoutingConnectionFactory implements ConnectionFact
6768
* representation will be handled by {@link #resolveSpecifiedLookupKey(Object)} and
6869
* {@link #determineCurrentLookupKey()}.
6970
*/
70-
@SuppressWarnings("unchecked")
7171
public void setTargetConnectionFactories(Map<?, ?> targetConnectionFactories) {
72-
this.targetConnectionFactories = (Map) targetConnectionFactories;
72+
this.targetConnectionFactories = targetConnectionFactories;
7373
}
7474

7575
/**
@@ -79,7 +79,7 @@ public void setTargetConnectionFactories(Map<?, ?> targetConnectionFactories) {
7979
* {@link String} (to be resolved via a {@link #setConnectionFactoryLookup ConnectionFactoryLookup}).
8080
* <p>
8181
* This {@link ConnectionFactory} will be used as target if none of the keyed {@link #setTargetConnectionFactories
82-
* targetConnectionFactories} match the {@link #determineCurrentLookupKey()} current lookup key.
82+
* targetConnectionFactories} match the {@link #determineCurrentLookupKey() current lookup key}.
8383
*/
8484
public void setDefaultTargetConnectionFactory(Object defaultTargetConnectionFactory) {
8585
this.defaultTargetConnectionFactory = defaultTargetConnectionFactory;
@@ -92,7 +92,7 @@ public void setDefaultTargetConnectionFactory(Object defaultTargetConnectionFact
9292
* Default is {@literal true}, accepting lookup keys without a corresponding entry in the target
9393
* {@link ConnectionFactory} map - simply falling back to the default {@link ConnectionFactory} in that case.
9494
* <p>
95-
* Switch this flag to {@literal false} if you would prefer the fallback to only apply no lookup key was emitted.
95+
* Switch this flag to {@literal false} if you would prefer the fallback to only apply when no lookup key was emitted.
9696
* Lookup keys without a {@link ConnectionFactory} entry will then lead to an {@link IllegalStateException}.
9797
*
9898
* @see #setTargetConnectionFactories
@@ -168,6 +168,7 @@ protected ConnectionFactory resolveSpecifiedConnectionFactory(Object connectionF
168168
} else if (connectionFactory instanceof String) {
169169
return this.connectionFactoryLookup.getConnectionFactory((String) connectionFactory);
170170
} else {
171+
171172
throw new IllegalArgumentException(
172173
"Illegal connection factory value - only 'io.r2dbc.spi.ConnectionFactory' and 'String' supported: "
173174
+ connectionFactory);

src/main/java/org/springframework/data/r2dbc/connectionfactory/lookup/MapConnectionFactoryLookup.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
* {@link ConnectionFactory} objects.
3131
*
3232
* @author Mark Paluch
33+
* @author Jens Schauder
3334
*/
3435
public class MapConnectionFactoryLookup implements ConnectionFactoryLookup {
3536

@@ -111,13 +112,10 @@ public ConnectionFactory getConnectionFactory(String connectionFactoryName)
111112

112113
Assert.notNull(connectionFactoryName, "ConnectionFactory name must not be null!");
113114

114-
ConnectionFactory connectionFactory = this.connectionFactories.get(connectionFactoryName);
115+
return this.connectionFactories.computeIfAbsent(connectionFactoryName, key -> {
115116

116-
if (connectionFactory == null) {
117117
throw new ConnectionFactoryLookupFailureException(
118118
"No ConnectionFactory with name '" + connectionFactoryName + "' registered");
119-
}
120-
121-
return connectionFactory;
119+
});
122120
}
123121
}

src/test/java/org/springframework/data/r2dbc/connectionfactory/lookup/AbstractRoutingConnectionFactoryUnitTests.java

+42-43
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,14 @@
1515
*/
1616
package org.springframework.data.r2dbc.connectionfactory.lookup;
1717

18+
import static java.util.Collections.*;
1819
import static org.assertj.core.api.Assertions.*;
1920

2021
import io.r2dbc.spi.ConnectionFactory;
2122
import reactor.core.publisher.Mono;
2223
import reactor.test.StepVerifier;
2324
import reactor.util.context.Context;
2425

25-
import java.util.Collections;
26-
import java.util.Map;
27-
2826
import org.junit.Before;
2927
import org.junit.Test;
3028
import org.junit.runner.RunWith;
@@ -35,6 +33,7 @@
3533
* Unit tests for {@link AbstractRoutingConnectionFactory}.
3634
*
3735
* @author Mark Paluch
36+
* @author Jens Schauder
3837
*/
3938
@RunWith(MockitoJUnitRunner.class)
4039
public class AbstractRoutingConnectionFactoryUnitTests {
@@ -44,23 +43,23 @@ public class AbstractRoutingConnectionFactoryUnitTests {
4443
@Mock ConnectionFactory defaultConnectionFactory;
4544
@Mock ConnectionFactory routedConnectionFactory;
4645

47-
DummyRoutingConnectionFactory sut;
46+
DummyRoutingConnectionFactory connectionFactory;
4847

4948
@Before
5049
public void before() {
5150

52-
sut = new DummyRoutingConnectionFactory();
53-
sut.setDefaultTargetConnectionFactory(defaultConnectionFactory);
51+
connectionFactory = new DummyRoutingConnectionFactory();
52+
connectionFactory.setDefaultTargetConnectionFactory(defaultConnectionFactory);
5453
}
5554

5655
@Test // gh-98
5756
public void shouldDetermineRoutedFactory() {
5857

59-
sut.setTargetConnectionFactories(Collections.singletonMap("key", routedConnectionFactory));
60-
sut.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
61-
sut.afterPropertiesSet();
58+
connectionFactory.setTargetConnectionFactories(singletonMap("key", routedConnectionFactory));
59+
connectionFactory.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
60+
connectionFactory.afterPropertiesSet();
6261

63-
sut.determineTargetConnectionFactory() //
62+
connectionFactory.determineTargetConnectionFactory() //
6463
.subscriberContext(Context.of(ROUTING_KEY, "key")) //
6564
.as(StepVerifier::create) //
6665
.expectNext(routedConnectionFactory) //
@@ -70,10 +69,10 @@ public void shouldDetermineRoutedFactory() {
7069
@Test // gh-98
7170
public void shouldFallbackToDefaultConnectionFactory() {
7271

73-
sut.setTargetConnectionFactories(Collections.singletonMap("key", routedConnectionFactory));
74-
sut.afterPropertiesSet();
72+
connectionFactory.setTargetConnectionFactories(singletonMap("key", routedConnectionFactory));
73+
connectionFactory.afterPropertiesSet();
7574

76-
sut.determineTargetConnectionFactory() //
75+
connectionFactory.determineTargetConnectionFactory() //
7776
.as(StepVerifier::create) //
7877
.expectNext(defaultConnectionFactory) //
7978
.verifyComplete();
@@ -82,30 +81,31 @@ public void shouldFallbackToDefaultConnectionFactory() {
8281
@Test // gh-98
8382
public void initializationShouldFailUnsupportedLookupKey() {
8483

85-
sut.setTargetConnectionFactories(Collections.singletonMap("key", new Object()));
84+
connectionFactory.setTargetConnectionFactories(singletonMap("key", new Object()));
8685

87-
assertThatThrownBy(() -> sut.afterPropertiesSet()).isInstanceOf(IllegalArgumentException.class);
86+
assertThatThrownBy(() -> connectionFactory.afterPropertiesSet()).isInstanceOf(IllegalArgumentException.class);
8887
}
8988

9089
@Test // gh-98
9190
public void initializationShouldFailUnresolvableKey() {
9291

93-
sut.setTargetConnectionFactories(Collections.singletonMap("key", "value"));
94-
sut.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
92+
connectionFactory.setTargetConnectionFactories(singletonMap("key", "value"));
93+
connectionFactory.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
9594

96-
assertThatThrownBy(() -> sut.afterPropertiesSet()).isInstanceOf(ConnectionFactoryLookupFailureException.class)
95+
assertThatThrownBy(() -> connectionFactory.afterPropertiesSet()) //
96+
.isInstanceOf(ConnectionFactoryLookupFailureException.class) //
9797
.hasMessageContaining("No ConnectionFactory with name 'value' registered");
9898
}
9999

100100
@Test // gh-98
101101
public void unresolvableConnectionFactoryRetrievalShouldFail() {
102102

103-
sut.setLenientFallback(false);
104-
sut.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
105-
sut.setTargetConnectionFactories(Collections.singletonMap("key", routedConnectionFactory));
106-
sut.afterPropertiesSet();
103+
connectionFactory.setLenientFallback(false);
104+
connectionFactory.setConnectionFactoryLookup(new MapConnectionFactoryLookup());
105+
connectionFactory.setTargetConnectionFactories(singletonMap("key", routedConnectionFactory));
106+
connectionFactory.afterPropertiesSet();
107107

108-
sut.determineTargetConnectionFactory() //
108+
connectionFactory.determineTargetConnectionFactory() //
109109
.subscriberContext(Context.of(ROUTING_KEY, "unknown")) //
110110
.as(StepVerifier::create) //
111111
.verifyError(IllegalStateException.class);
@@ -114,11 +114,11 @@ public void unresolvableConnectionFactoryRetrievalShouldFail() {
114114
@Test // gh-98
115115
public void connectionFactoryRetrievalWithUnknownLookupKeyShouldReturnDefaultConnectionFactory() {
116116

117-
sut.setTargetConnectionFactories(Collections.singletonMap("key", routedConnectionFactory));
118-
sut.setDefaultTargetConnectionFactory(defaultConnectionFactory);
119-
sut.afterPropertiesSet();
117+
connectionFactory.setTargetConnectionFactories(singletonMap("key", routedConnectionFactory));
118+
connectionFactory.setDefaultTargetConnectionFactory(defaultConnectionFactory);
119+
connectionFactory.afterPropertiesSet();
120120

121-
sut.determineTargetConnectionFactory() //
121+
connectionFactory.determineTargetConnectionFactory() //
122122
.subscriberContext(Context.of(ROUTING_KEY, "unknown")) //
123123
.as(StepVerifier::create) //
124124
.expectNext(defaultConnectionFactory) //
@@ -128,12 +128,12 @@ public void connectionFactoryRetrievalWithUnknownLookupKeyShouldReturnDefaultCon
128128
@Test // gh-98
129129
public void connectionFactoryRetrievalWithoutLookupKeyShouldReturnDefaultConnectionFactory() {
130130

131-
sut.setTargetConnectionFactories(Collections.singletonMap("key", routedConnectionFactory));
132-
sut.setDefaultTargetConnectionFactory(defaultConnectionFactory);
133-
sut.setLenientFallback(false);
134-
sut.afterPropertiesSet();
131+
connectionFactory.setTargetConnectionFactories(singletonMap("key", routedConnectionFactory));
132+
connectionFactory.setDefaultTargetConnectionFactory(defaultConnectionFactory);
133+
connectionFactory.setLenientFallback(false);
134+
connectionFactory.afterPropertiesSet();
135135

136-
sut.determineTargetConnectionFactory() //
136+
connectionFactory.determineTargetConnectionFactory() //
137137
.as(StepVerifier::create) //
138138
.expectNext(defaultConnectionFactory) //
139139
.verifyComplete();
@@ -144,37 +144,36 @@ public void shouldLookupFromMap() {
144144

145145
MapConnectionFactoryLookup lookup = new MapConnectionFactoryLookup("lookup-key", routedConnectionFactory);
146146

147-
sut.setConnectionFactoryLookup(lookup);
148-
sut.setTargetConnectionFactories(Collections.singletonMap("my-key", "lookup-key"));
149-
sut.afterPropertiesSet();
147+
connectionFactory.setConnectionFactoryLookup(lookup);
148+
connectionFactory.setTargetConnectionFactories(singletonMap("my-key", "lookup-key"));
149+
connectionFactory.afterPropertiesSet();
150150

151-
sut.determineTargetConnectionFactory() //
151+
connectionFactory.determineTargetConnectionFactory() //
152152
.subscriberContext(Context.of(ROUTING_KEY, "my-key")) //
153153
.as(StepVerifier::create) //
154154
.expectNext(routedConnectionFactory) //
155155
.verifyComplete();
156156
}
157157

158158
@Test // gh-98
159-
@SuppressWarnings("unchecked")
160159
public void shouldAllowModificationsAfterInitialization() {
161160

162161
MapConnectionFactoryLookup lookup = new MapConnectionFactoryLookup();
163162

164-
sut.setConnectionFactoryLookup(lookup);
165-
sut.setTargetConnectionFactories((Map) lookup.getConnectionFactories());
166-
sut.afterPropertiesSet();
163+
connectionFactory.setConnectionFactoryLookup(lookup);
164+
connectionFactory.setTargetConnectionFactories(lookup.getConnectionFactories());
165+
connectionFactory.afterPropertiesSet();
167166

168-
sut.determineTargetConnectionFactory() //
167+
connectionFactory.determineTargetConnectionFactory() //
169168
.subscriberContext(Context.of(ROUTING_KEY, "lookup-key")) //
170169
.as(StepVerifier::create) //
171170
.expectNext(defaultConnectionFactory) //
172171
.verifyComplete();
173172

174173
lookup.addConnectionFactory("lookup-key", routedConnectionFactory);
175-
sut.afterPropertiesSet();
174+
connectionFactory.afterPropertiesSet();
176175

177-
sut.determineTargetConnectionFactory() //
176+
connectionFactory.determineTargetConnectionFactory() //
178177
.subscriberContext(Context.of(ROUTING_KEY, "lookup-key")) //
179178
.as(StepVerifier::create) //
180179
.expectNext(routedConnectionFactory) //

src/test/java/org/springframework/data/r2dbc/connectionfactory/lookup/BeanFactoryConnectionFactoryLookupUnitTests.java

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public void shouldLookupConnectionFactory() {
4949

5050
BeanFactoryConnectionFactoryLookup lookup = new BeanFactoryConnectionFactoryLookup();
5151
lookup.setBeanFactory(beanFactory);
52+
5253
ConnectionFactory connectionFactory = lookup.getConnectionFactory(CONNECTION_FACTORY_BEAN_NAME);
5354

5455
assertThat(connectionFactory).isNotNull();

0 commit comments

Comments
 (0)