Skip to content

Commit c2590d8

Browse files
authored
Add method to set listeners in ClusterSettings, ServerSettings and ConnectionPoolSettings builders (#839)
JAVA-4317
1 parent 6cd124c commit c2590d8

File tree

6 files changed

+77
-0
lines changed

6 files changed

+77
-0
lines changed

driver-core/src/main/com/mongodb/connection/ClusterSettings.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,19 @@ public Builder addClusterListener(final ClusterListener clusterListener) {
268268
return this;
269269
}
270270

271+
/**
272+
* Sets the cluster listeners.
273+
*
274+
* @param clusterListeners list of cluster listeners
275+
* @return this
276+
* @since 4.5
277+
*/
278+
public Builder clusterListenerList(final List<ClusterListener> clusterListeners) {
279+
notNull("clusterListeners", clusterListeners);
280+
this.clusterListeners = new ArrayList<>(clusterListeners);
281+
return this;
282+
}
283+
271284
/**
272285
* Takes the settings from the given {@code ConnectionString} and applies them to the builder
273286
*

driver-core/src/main/com/mongodb/connection/ConnectionPoolSettings.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,19 @@ public Builder addConnectionPoolListener(final ConnectionPoolListener connection
215215
return this;
216216
}
217217

218+
/**
219+
* Sets the connection pool listeners.
220+
*
221+
* @param connectionPoolListeners list of connection pool listeners
222+
* @return this
223+
* @since 4.5
224+
*/
225+
public Builder connectionPoolListenerList(final List<ConnectionPoolListener> connectionPoolListeners) {
226+
notNull("connectionPoolListeners", connectionPoolListeners);
227+
this.connectionPoolListeners = new ArrayList<>(connectionPoolListeners);
228+
return this;
229+
}
230+
218231
/**
219232
* The maximum number of connections a pool may be establishing concurrently.
220233
*

driver-core/src/main/com/mongodb/connection/ServerSettings.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,19 @@ public Builder addServerListener(final ServerListener serverListener) {
130130
return this;
131131
}
132132

133+
/**
134+
* Sets the server listeners.
135+
*
136+
* @param serverListeners list of server listeners
137+
* @return this
138+
* @since 4.5
139+
*/
140+
public Builder serverListenerList(final List<ServerListener> serverListeners) {
141+
notNull("serverListeners", serverListeners);
142+
this.serverListeners = new ArrayList<>(serverListeners);
143+
return this;
144+
}
145+
133146
/**
134147
* Adds a server monitor listener.
135148
*
@@ -143,6 +156,19 @@ public Builder addServerMonitorListener(final ServerMonitorListener serverMonito
143156
return this;
144157
}
145158

159+
/**
160+
* Sets the server monitor listeners.
161+
*
162+
* @param serverMonitorListeners list of server monitor listeners
163+
* @return this
164+
* @since 4.5
165+
*/
166+
public Builder serverMonitorListenerList(final List<ServerMonitorListener> serverMonitorListeners) {
167+
notNull("serverMonitorListeners", serverMonitorListeners);
168+
this.serverMonitorListeners = new ArrayList<>(serverMonitorListeners);
169+
return this;
170+
}
171+
146172
/**
147173
* Takes the settings from the given {@code ConnectionString} and applies them to the builder
148174
*

driver-core/src/test/unit/com/mongodb/connection/ClusterSettingsSpecification.groovy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class ClusterSettingsSpecification extends Specification {
4848
when:
4949
def listenerOne = Mock(ClusterListener)
5050
def listenerTwo = Mock(ClusterListener)
51+
def listenerThree = Mock(ClusterListener)
5152
def settings = ClusterSettings.builder()
5253
.hosts(hosts)
5354
.mode(ClusterConnectionMode.MULTIPLE)
@@ -68,6 +69,12 @@ class ClusterSettingsSpecification extends Specification {
6869
settings.serverSelector == serverSelector
6970
settings.getServerSelectionTimeout(TimeUnit.MILLISECONDS) == 1000
7071
settings.clusterListeners == [listenerOne, listenerTwo]
72+
73+
when:
74+
settings = ClusterSettings.builder(settings).clusterListenerList([listenerThree]).build()
75+
76+
then:
77+
settings.clusterListeners == [listenerThree]
7178
}
7279

7380
def 'should apply settings'() {

driver-core/src/test/unit/com/mongodb/connection/ConnectionPoolSettingsSpecification.groovy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ class ConnectionPoolSettingsSpecification extends Specification {
170170

171171
def 'should apply settings'() {
172172
given:
173+
def connectionPoolListener = Mock(ConnectionPoolListener)
173174
def defaultSettings = ConnectionPoolSettings.builder().build()
174175
def customSettings = ConnectionPoolSettings
175176
.builder()
@@ -187,6 +188,12 @@ class ConnectionPoolSettingsSpecification extends Specification {
187188
expect:
188189
ConnectionPoolSettings.builder().applySettings(customSettings).build() == customSettings
189190
ConnectionPoolSettings.builder(customSettings).applySettings(defaultSettings).build() == defaultSettings
191+
192+
when:
193+
customSettings = ConnectionPoolSettings.builder(customSettings).connectionPoolListenerList([connectionPoolListener]).build()
194+
195+
then:
196+
customSettings.connectionPoolListeners == [connectionPoolListener]
190197
}
191198

192199
def 'toString should be overridden'() {

driver-core/src/test/unit/com/mongodb/connection/ServerSettingsSpecification.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ class ServerSettingsSpecification extends Specification {
4040
given:
4141
def serverListenerOne = new ServerListenerAdapter() { }
4242
def serverListenerTwo = new ServerListenerAdapter() { }
43+
def serverListenerThree = new ServerListenerAdapter() { }
4344
def serverMonitorListenerOne = new ServerMonitorListenerAdapter() { }
4445
def serverMonitorListenerTwo = new ServerMonitorListenerAdapter() { }
46+
def serverMonitorListenerThree = new ServerMonitorListenerAdapter() { }
4547

4648
when:
4749
def settings = ServerSettings.builder()
@@ -59,6 +61,15 @@ class ServerSettingsSpecification extends Specification {
5961
settings.getMinHeartbeatFrequency(MILLISECONDS) == 1000
6062
settings.serverListeners == [serverListenerOne, serverListenerTwo]
6163
settings.serverMonitorListeners == [serverMonitorListenerOne, serverMonitorListenerTwo]
64+
65+
when:
66+
settings = ServerSettings.builder()
67+
.serverListenerList([serverListenerThree])
68+
.serverMonitorListenerList([serverMonitorListenerThree]).build()
69+
70+
then:
71+
settings.serverListeners == [serverListenerThree]
72+
settings.serverMonitorListeners == [serverMonitorListenerThree]
6273
}
6374

6475
def 'when connection string is applied to builder, all properties should be set'() {

0 commit comments

Comments
 (0)