27
27
import com .mongodb .connection .SocketSettings ;
28
28
import com .mongodb .connection .SslSettings ;
29
29
import com .mongodb .connection .StreamFactoryFactory ;
30
+ import com .mongodb .connection .TransportSettings ;
30
31
import com .mongodb .event .CommandListener ;
31
32
import com .mongodb .lang .Nullable ;
32
33
import com .mongodb .spi .dns .DnsClient ;
62
63
*
63
64
* @since 3.7
64
65
*/
66
+ @ SuppressWarnings ("deprecation" )
65
67
@ Immutable
66
68
public final class MongoClientSettings {
67
69
private static final CodecRegistry DEFAULT_CODEC_REGISTRY =
@@ -89,6 +91,7 @@ public final class MongoClientSettings {
89
91
private final boolean retryReads ;
90
92
private final ReadConcern readConcern ;
91
93
private final MongoCredential credential ;
94
+ private final TransportSettings transportSettings ;
92
95
private final StreamFactoryFactory streamFactoryFactory ;
93
96
private final List <CommandListener > commandListeners ;
94
97
private final CodecRegistry codecRegistry ;
@@ -209,6 +212,7 @@ public static final class Builder {
209
212
private boolean retryReads = true ;
210
213
private ReadConcern readConcern = ReadConcern .DEFAULT ;
211
214
private CodecRegistry codecRegistry = MongoClientSettings .getDefaultCodecRegistry ();
215
+ private TransportSettings transportSettings ;
212
216
private StreamFactoryFactory streamFactoryFactory ;
213
217
private List <CommandListener > commandListeners = new ArrayList <>();
214
218
@@ -252,6 +256,7 @@ private Builder(final MongoClientSettings settings) {
252
256
serverApi = settings .getServerApi ();
253
257
dnsClient = settings .getDnsClient ();
254
258
inetAddressResolver = settings .getInetAddressResolver ();
259
+ transportSettings = settings .getTransportSettings ();
255
260
streamFactoryFactory = settings .getStreamFactoryFactory ();
256
261
autoEncryptionSettings = settings .getAutoEncryptionSettings ();
257
262
contextProvider = settings .getContextProvider ();
@@ -490,12 +495,30 @@ public Builder codecRegistry(final CodecRegistry codecRegistry) {
490
495
* @param streamFactoryFactory the stream factory factory
491
496
* @return this
492
497
* @see #getStreamFactoryFactory()
498
+ * @deprecated Prefer {@link #transportSettings(TransportSettings)}
493
499
*/
500
+ @ Deprecated
494
501
public Builder streamFactoryFactory (final StreamFactoryFactory streamFactoryFactory ) {
495
502
this .streamFactoryFactory = notNull ("streamFactoryFactory" , streamFactoryFactory );
496
503
return this ;
497
504
}
498
505
506
+ /**
507
+ * Sets the {@link TransportSettings} to apply.
508
+ *
509
+ * <p>
510
+ * If transport settings are applied, application of {@link #streamFactoryFactory} is ignored.
511
+ * </p>
512
+ *
513
+ * @param transportSettings the transport settings
514
+ * @return this
515
+ * @see #getTransportSettings()
516
+ */
517
+ public Builder transportSettings (final TransportSettings transportSettings ) {
518
+ this .transportSettings = notNull ("transportSettings" , transportSettings );
519
+ return this ;
520
+ }
521
+
499
522
/**
500
523
* Adds the given command listener.
501
524
*
@@ -771,12 +794,27 @@ public CodecRegistry getCodecRegistry() {
771
794
*
772
795
* @return the stream factory factory
773
796
* @see Builder#streamFactoryFactory(StreamFactoryFactory)
797
+ * @deprecated Prefer {@link #getTransportSettings()}
774
798
*/
799
+ @ Deprecated
775
800
@ Nullable
776
801
public StreamFactoryFactory getStreamFactoryFactory () {
777
802
return streamFactoryFactory ;
778
803
}
779
804
805
+ /**
806
+ * Gets the settings for the underlying transport implementation
807
+ *
808
+ * @return the settings for the underlying transport implementation
809
+ *
810
+ * @since 4.11
811
+ * @see Builder#transportSettings(TransportSettings)
812
+ */
813
+ @ Nullable
814
+ public TransportSettings getTransportSettings () {
815
+ return transportSettings ;
816
+ }
817
+
780
818
/**
781
819
* Gets the list of added {@code CommandListener}.
782
820
*
@@ -978,6 +1016,7 @@ public boolean equals(final Object o) {
978
1016
&& Objects .equals (writeConcern , that .writeConcern )
979
1017
&& Objects .equals (readConcern , that .readConcern )
980
1018
&& Objects .equals (credential , that .credential )
1019
+ && Objects .equals (transportSettings , that .transportSettings )
981
1020
&& Objects .equals (streamFactoryFactory , that .streamFactoryFactory )
982
1021
&& Objects .equals (commandListeners , that .commandListeners )
983
1022
&& Objects .equals (codecRegistry , that .codecRegistry )
@@ -1000,11 +1039,11 @@ public boolean equals(final Object o) {
1000
1039
1001
1040
@ Override
1002
1041
public int hashCode () {
1003
- return Objects .hash (readPreference , writeConcern , retryWrites , retryReads , readConcern , credential , streamFactoryFactory ,
1004
- commandListeners , codecRegistry , loggerSettings , clusterSettings , socketSettings , heartbeatSocketSettings ,
1005
- connectionPoolSettings , serverSettings , sslSettings , applicationName , compressorList , uuidRepresentation , serverApi ,
1006
- autoEncryptionSettings , heartbeatSocketTimeoutSetExplicitly , heartbeatConnectTimeoutSetExplicitly , dnsClient ,
1007
- inetAddressResolver , contextProvider );
1042
+ return Objects .hash (readPreference , writeConcern , retryWrites , retryReads , readConcern , credential , transportSettings ,
1043
+ streamFactoryFactory , commandListeners , codecRegistry , loggerSettings , clusterSettings , socketSettings ,
1044
+ heartbeatSocketSettings , connectionPoolSettings , serverSettings , sslSettings , applicationName , compressorList ,
1045
+ uuidRepresentation , serverApi , autoEncryptionSettings , heartbeatSocketTimeoutSetExplicitly ,
1046
+ heartbeatConnectTimeoutSetExplicitly , dnsClient , inetAddressResolver , contextProvider );
1008
1047
}
1009
1048
1010
1049
@ Override
@@ -1016,6 +1055,7 @@ public String toString() {
1016
1055
+ ", retryReads=" + retryReads
1017
1056
+ ", readConcern=" + readConcern
1018
1057
+ ", credential=" + credential
1058
+ + ", transportSettings=" + transportSettings
1019
1059
+ ", streamFactoryFactory=" + streamFactoryFactory
1020
1060
+ ", commandListeners=" + commandListeners
1021
1061
+ ", codecRegistry=" + codecRegistry
@@ -1044,6 +1084,7 @@ private MongoClientSettings(final Builder builder) {
1044
1084
retryReads = builder .retryReads ;
1045
1085
readConcern = builder .readConcern ;
1046
1086
credential = builder .credential ;
1087
+ transportSettings = builder .transportSettings ;
1047
1088
streamFactoryFactory = builder .streamFactoryFactory ;
1048
1089
codecRegistry = builder .codecRegistry ;
1049
1090
commandListeners = builder .commandListeners ;
0 commit comments