Skip to content

Commit 122ce29

Browse files
committed
Refactor adapter.
Move into util package. Remove circular dependencies, add nullability annotations, fix Javadoc. Original pull request: #4624 See: #4578
1 parent bce85c4 commit 122ce29

11 files changed

+120
-362
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/MongoCompatibilityAdapter.java

-188
This file was deleted.

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java

+1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public DefaultIndexOperations(MongoOperations mongoOperations, String collection
114114
this.type = type;
115115
}
116116

117+
@Override
117118
public String ensureIndex(final IndexDefinition indexDefinition) {
118119

119120
return execute(collection -> {

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultReactiveIndexOperations.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ private DefaultReactiveIndexOperations(ReactiveMongoOperations mongoOperations,
8888
this.type = type;
8989
}
9090

91-
public Mono<String> ensureIndex(final IndexDefinition indexDefinition) {
91+
@Override
92+
public Mono<String> ensureIndex(IndexDefinition indexDefinition) {
9293

9394
return mongoOperations.execute(collectionName, collection -> {
9495

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/IndexConverters.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
import java.util.concurrent.TimeUnit;
1919

2020
import org.bson.Document;
21+
2122
import org.springframework.core.convert.converter.Converter;
22-
import org.springframework.data.mongodb.MongoCompatibilityAdapter;
2323
import org.springframework.data.mongodb.core.index.IndexDefinition;
2424
import org.springframework.data.mongodb.core.index.IndexInfo;
25-
import org.springframework.data.mongodb.util.MongoClientVersion;
25+
import org.springframework.data.mongodb.util.MongoCompatibilityAdapter;
2626
import org.springframework.lang.Nullable;
2727
import org.springframework.util.ObjectUtils;
2828

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoClientSettingsFactoryBean.java

+10-71
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.springframework.data.mongodb.core;
1717

18-
import java.lang.reflect.Method;
1918
import java.security.NoSuchAlgorithmException;
2019
import java.util.Arrays;
2120
import java.util.Collections;
@@ -24,17 +23,13 @@
2423

2524
import javax.net.ssl.SSLContext;
2625

27-
import org.apache.commons.logging.Log;
28-
import org.apache.commons.logging.LogFactory;
2926
import org.bson.UuidRepresentation;
3027
import org.bson.codecs.configuration.CodecRegistry;
28+
3129
import org.springframework.beans.factory.config.AbstractFactoryBean;
32-
import org.springframework.data.mongodb.MongoCompatibilityAdapter;
33-
import org.springframework.data.mongodb.util.MongoClientVersion;
30+
import org.springframework.data.mongodb.util.MongoCompatibilityAdapter;
3431
import org.springframework.lang.Nullable;
35-
import org.springframework.util.ClassUtils;
3632
import org.springframework.util.CollectionUtils;
37-
import org.springframework.util.ReflectionUtils;
3833
import org.springframework.util.StringUtils;
3934

4035
import com.mongodb.AutoEncryptionSettings;
@@ -62,7 +57,8 @@ public class MongoClientSettingsFactoryBean extends AbstractFactoryBean<MongoCli
6257

6358
private CodecRegistry codecRegistry = DEFAULT_MONGO_SETTINGS.getCodecRegistry();
6459

65-
@Nullable private Object streamFactoryFactory;
60+
@Nullable private Object streamFactoryFactory = MongoCompatibilityAdapter
61+
.clientSettingsAdapter(DEFAULT_MONGO_SETTINGS).getStreamFactoryFactory();
6662
@Nullable private TransportSettings transportSettings;
6763

6864
private ReadPreference readPreference = DEFAULT_MONGO_SETTINGS.getReadPreference();
@@ -125,21 +121,17 @@ public class MongoClientSettingsFactoryBean extends AbstractFactoryBean<MongoCli
125121
private @Nullable AutoEncryptionSettings autoEncryptionSettings;
126122
private @Nullable ServerApi serverApi;
127123

128-
{
129-
streamFactoryFactory = MongoCompatibilityAdapter.clientSettingsAdapter(DEFAULT_MONGO_SETTINGS).getStreamFactoryFactory();
130-
}
131-
132124
/**
133125
* @param socketConnectTimeoutMS in msec
134-
* @see com.mongodb.connection.SocketSettings.Builder#connectTimeout(int, TimeUnit)
126+
* @see com.mongodb.connection.SocketSettings.Builder#connectTimeout(long, TimeUnit)
135127
*/
136128
public void setSocketConnectTimeoutMS(int socketConnectTimeoutMS) {
137129
this.socketConnectTimeoutMS = socketConnectTimeoutMS;
138130
}
139131

140132
/**
141133
* @param socketReadTimeoutMS in msec
142-
* @see com.mongodb.connection.SocketSettings.Builder#readTimeout(int, TimeUnit)
134+
* @see com.mongodb.connection.SocketSettings.Builder#readTimeout(long, TimeUnit)
143135
*/
144136
public void setSocketReadTimeoutMS(int socketReadTimeoutMS) {
145137
this.socketReadTimeoutMS = socketReadTimeoutMS;
@@ -380,8 +372,11 @@ public void setReadPreference(ReadPreference readPreference) {
380372
}
381373

382374
/**
383-
* @param streamFactoryFactory // * @see MongoClientSettings.Builder#streamFactoryFactory(StreamFactoryFactory)
375+
* @param streamFactoryFactory
376+
* @deprecated since 4.3, will be removed in the MongoDB 5.0 driver in favor of
377+
* {@code com.mongodb.connection.TransportSettings}.
384378
*/
379+
@Deprecated(since = "4.3")
385380
public void setStreamFactoryFactory(Object streamFactoryFactory) {
386381
this.streamFactoryFactory = streamFactoryFactory;
387382
}
@@ -449,7 +444,6 @@ protected MongoClientSettings createInstance() {
449444
settings.hosts(clusterHosts);
450445
}
451446
settings.localThreshold(clusterLocalThresholdMS, TimeUnit.MILLISECONDS);
452-
// settings.maxWaitQueueSize(clusterMaxWaitQueueSize);
453447
settings.requiredClusterType(custerRequiredClusterType);
454448

455449
if (StringUtils.hasText(clusterSrvHost)) {
@@ -518,59 +512,4 @@ protected MongoClientSettings createInstance() {
518512

519513
return builder.build();
520514
}
521-
522-
static class MongoStreamFactoryFactorySettingsConfigurer {
523-
524-
private static final Log logger = LogFactory.getLog(MongoClientSettingsFactoryBean.class);
525-
526-
private static final String STREAM_FACTORY_NAME = "com.mongodb.connection.StreamFactoryFactory";
527-
private static final boolean STREAM_FACTORY_PRESENT = ClassUtils.isPresent(STREAM_FACTORY_NAME,
528-
MongoStreamFactoryFactorySettingsConfigurer.class.getClassLoader());
529-
private final MongoClientSettings.Builder settingsBuilder;
530-
531-
static boolean isStreamFactoryPresent() {
532-
return STREAM_FACTORY_PRESENT;
533-
}
534-
535-
static Object getDefaultStreamFactoryFactory() {
536-
537-
if (MongoClientVersion.is5PlusClient()) {
538-
return null;
539-
}
540-
541-
Method getStreamFactoryFactory = ReflectionUtils.findMethod(MongoClientSettings.class, "getStreamFactoryFactory");
542-
return getStreamFactoryFactory != null
543-
? ReflectionUtils.invokeMethod(getStreamFactoryFactory, DEFAULT_MONGO_SETTINGS)
544-
: null;
545-
}
546-
547-
public MongoStreamFactoryFactorySettingsConfigurer(Builder settingsBuilder) {
548-
this.settingsBuilder = settingsBuilder;
549-
}
550-
551-
void setStreamFactory(Object streamFactory) {
552-
553-
if (MongoClientVersion.is5PlusClient()) {
554-
logger.warn("StreamFactoryFactory is no longer available. Use TransportSettings instead.");
555-
}
556-
557-
if (isStreamFactoryPresent()) { //
558-
try {
559-
Class<?> streamFactoryType = ClassUtils.forName(STREAM_FACTORY_NAME,
560-
streamFactory.getClass().getClassLoader());
561-
if (!ClassUtils.isAssignable(streamFactoryType, streamFactory.getClass())) {
562-
throw new IllegalArgumentException("Expected %s but found %s".formatted(streamFactoryType, streamFactory));
563-
}
564-
565-
Method setter = ReflectionUtils.findMethod(settingsBuilder.getClass(), "streamFactoryFactory",
566-
streamFactoryType);
567-
if (setter != null) {
568-
ReflectionUtils.invokeMethod(setter, settingsBuilder, streamFactoryType.cast(streamFactory));
569-
}
570-
} catch (ClassNotFoundException e) {
571-
throw new IllegalArgumentException("Cannot set StreamFactoryFactory for %s".formatted(settingsBuilder), e);
572-
}
573-
}
574-
}
575-
}
576515
}

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.commons.logging.LogFactory;
3131
import org.bson.Document;
3232
import org.bson.conversions.Bson;
33+
3334
import org.springframework.beans.BeansException;
3435
import org.springframework.context.ApplicationContext;
3536
import org.springframework.context.ApplicationContextAware;
@@ -53,7 +54,6 @@
5354
import org.springframework.data.mapping.MappingException;
5455
import org.springframework.data.mapping.callback.EntityCallbacks;
5556
import org.springframework.data.mapping.context.MappingContext;
56-
import org.springframework.data.mongodb.MongoCompatibilityAdapter;
5757
import org.springframework.data.mongodb.MongoDatabaseFactory;
5858
import org.springframework.data.mongodb.MongoDatabaseUtils;
5959
import org.springframework.data.mongodb.SessionSynchronization;
@@ -104,7 +104,7 @@
104104
import org.springframework.data.mongodb.core.query.UpdateDefinition.ArrayFilter;
105105
import org.springframework.data.mongodb.core.timeseries.Granularity;
106106
import org.springframework.data.mongodb.core.validation.Validator;
107-
import org.springframework.data.mongodb.util.MongoClientVersion;
107+
import org.springframework.data.mongodb.util.MongoCompatibilityAdapter;
108108
import org.springframework.data.projection.EntityProjection;
109109
import org.springframework.data.util.CloseableIterator;
110110
import org.springframework.data.util.Optionals;

0 commit comments

Comments
 (0)