Skip to content

Commit 74ab348

Browse files
tmp save - doh - srly
1 parent 448f44b commit 74ab348

File tree

129 files changed

+715
-352
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+715
-352
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ public class MongoTransactionManager extends AbstractPlatformTransactionManager
8080
* @see #setTransactionSynchronization(int)
8181
*/
8282
public MongoTransactionManager() {
83+
8384
this.transactionOptionsResolver = MongoTransactionOptionsResolver.defaultResolver();
85+
this.options = MongoTransactionOptions.NONE;
8486
}
8587

8688
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static Mono<MongoDatabase> getDatabase(ReactiveMongoDatabaseFactory facto
113113
* @param factory the {@link ReactiveMongoDatabaseFactory} to get the {@link MongoDatabase} from.
114114
* @return the {@link MongoDatabase} that is potentially associated with a transactional {@link ClientSession}.
115115
*/
116-
public static Mono<MongoDatabase> getDatabase(String dbName, ReactiveMongoDatabaseFactory factory) {
116+
public static Mono<MongoDatabase> getDatabase(@Nullable String dbName, ReactiveMongoDatabaseFactory factory) {
117117
return doGetMongoDatabase(dbName, factory, SessionSynchronization.ON_ACTUAL_TRANSACTION);
118118
}
119119

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import java.util.Set;
2323

24+
import org.jspecify.annotations.NullUnmarked;
2425
import org.jspecify.annotations.Nullable;
2526
import org.springframework.beans.BeanMetadataElement;
2627
import org.springframework.beans.factory.config.BeanDefinition;
@@ -76,6 +77,7 @@
7677
* @author Zied Yaich
7778
* @author Tomasz Forys
7879
*/
80+
@NullUnmarked
7981
public class MappingMongoConverterParser implements BeanDefinitionParser {
8082

8183
private static final String BASE_PACKAGE = "base-package";

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingBeanDefinitionParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.springframework.data.config.ParsingUtils.*;
1919
import static org.springframework.data.mongodb.config.BeanNames.*;
2020

21+
import org.jspecify.annotations.NullUnmarked;
2122
import org.jspecify.annotations.Nullable;
2223
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2324
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -42,6 +43,7 @@
4243
* @author Oliver Gierke
4344
* @author Mark Paluch
4445
*/
46+
@NullUnmarked
4547
public class MongoAuditingBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
4648

4749
private static boolean PROJECT_REACTOR_AVAILABLE = ClassUtils.isPresent("reactor.core.publisher.Mono",

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoDbFactoryParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.util.Set;
2222

23+
import org.jspecify.annotations.NullUnmarked;
2324
import org.jspecify.annotations.Nullable;
2425
import org.springframework.beans.factory.BeanDefinitionStoreException;
2526
import org.springframework.beans.factory.config.BeanDefinition;
@@ -47,6 +48,7 @@
4748
* @author Viktor Khoroshko
4849
* @author Mark Paluch
4950
*/
51+
@NullUnmarked
5052
public class MongoDbFactoryParser extends AbstractBeanDefinitionParser {
5153

5254
private static final Set<String> MONGO_URI_ALLOWED_ADDITIONAL_ATTRIBUTES = Set.of("id", "write-concern");

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoJmxParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.data.mongodb.config;
1717

18+
import org.jspecify.annotations.NullUnmarked;
1819
import org.springframework.beans.factory.config.BeanDefinition;
1920
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
2021
import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
@@ -33,6 +34,7 @@
3334
* @author Oliver Gierke
3435
* @author Christoph Strobl
3536
*/
37+
@NullUnmarked
3638
public class MongoJmxParser implements BeanDefinitionParser {
3739

3840
public BeanDefinition parse(Element element, ParserContext parserContext) {

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoParsingUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import java.util.Map;
2121

22+
import org.jspecify.annotations.NullUnmarked;
2223
import org.springframework.beans.factory.config.BeanDefinition;
2324
import org.springframework.beans.factory.config.CustomEditorConfigurer;
2425
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -40,6 +41,7 @@
4041
* @author Christoph Strobl
4142
* @author Mark Paluch
4243
*/
44+
@NullUnmarked
4345
abstract class MongoParsingUtils {
4446

4547
private MongoParsingUtils() {}

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoTemplateParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.springframework.data.config.ParsingUtils.*;
1919
import static org.springframework.data.mongodb.config.MongoParsingUtils.*;
2020

21+
import org.jspecify.annotations.NullUnmarked;
2122
import org.springframework.beans.factory.BeanDefinitionStoreException;
2223
import org.springframework.beans.factory.config.BeanDefinition;
2324
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
@@ -37,6 +38,7 @@
3738
* @author Martin Baumgartner
3839
* @author Oliver Gierke
3940
*/
41+
@NullUnmarked
4042
class MongoTemplateParser extends AbstractBeanDefinitionParser {
4143

4244
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public ChangeStreamEvent(@Nullable ChangeStreamDocument<Document> raw, Class<T>
8989
*/
9090
public @Nullable Instant getTimestamp() {
9191

92-
return getBsonTimestamp() != null ? converter.getConversionService().convert(raw.getClusterTime(), Instant.class)
92+
return getBsonTimestamp() != null && raw != null ? converter.getConversionService().convert(raw.getClusterTime(), Instant.class)
9393
: null;
9494
}
9595

@@ -183,6 +183,7 @@ private T getConvertedFullDocument(Document fullDocument) {
183183
return (T) doGetConverted(fullDocument, CONVERTED_FULL_DOCUMENT_UPDATER);
184184
}
185185

186+
@SuppressWarnings("NullAway")
186187
private Object doGetConverted(Document fullDocument, AtomicReferenceFieldUpdater<ChangeStreamEvent, Object> updater) {
187188

188189
Object result = updater.get(this);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ public static class ValidationOptions {
461461
private final @Nullable ValidationLevel validationLevel;
462462
private final @Nullable ValidationAction validationAction;
463463

464-
public ValidationOptions(Validator validator, ValidationLevel validationLevel, ValidationAction validationAction) {
464+
public ValidationOptions(@Nullable Validator validator, @Nullable ValidationLevel validationLevel, @Nullable ValidationAction validationAction) {
465465

466466
this.validator = validator;
467467
this.validationLevel = validationLevel;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.jspecify.annotations.Nullable;
2727
import org.springframework.data.geo.Point;
2828
import org.springframework.data.mongodb.core.query.MetricConversion;
29+
import org.springframework.util.Assert;
2930
import org.springframework.util.ObjectUtils;
3031

3132
/**
@@ -160,6 +161,8 @@ private static Document createGeoWithin(String key, Document source, @Nullable O
160161
boolean spheric = source.containsKey("$nearSphere");
161162
Object $near = spheric ? source.get("$nearSphere") : source.get("$near");
162163

164+
Assert.notNull($near, "Invalid near query - must contain $nearSphere or $near");
165+
163166
Number maxDistance = getMaxDistance(source, $near, spheric);
164167

165168
List<Object> $centerMax = Arrays.asList(toCenterCoordinates($near), maxDistance);
@@ -251,6 +254,9 @@ private static Object toCenterCoordinates(Object value) {
251254

252255
if (document.containsKey("$geometry")) {
253256
Document geoJsonPoint = document.get("$geometry", Document.class);
257+
if(!geoJsonPoint.containsKey("coordinates")) {
258+
throw new IllegalStateException("Invalid geometry without coordinates.");
259+
}
254260
return geoJsonPoint.get("coordinates");
255261
}
256262
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public DefaultIndexOperations(MongoOperations mongoOperations, String collection
115115
}
116116

117117
@Override
118+
@SuppressWarnings("NullAway")
118119
public String ensureIndex(IndexDefinition indexDefinition) {
119120

120121
return execute(collection -> {
@@ -159,6 +160,7 @@ public void dropIndex(String name) {
159160
}
160161

161162
@Override
163+
@SuppressWarnings("NullAway")
162164
public void alterIndex(String name, org.springframework.data.mongodb.core.index.IndexOptions options) {
163165

164166
Document indexOptions = new Document("name", name);
@@ -179,6 +181,7 @@ public void dropAllIndexes() {
179181
}
180182

181183
@Override
184+
@SuppressWarnings("NullAway")
182185
public List<IndexInfo> getIndexInfo() {
183186

184187
return execute(new CollectionCallback<List<IndexInfo>>() {
@@ -226,6 +229,7 @@ private IndexOptions addPartialFilterIfPresent(IndexOptions ops, Document source
226229
mapper.getMappedSort((Document) sourceOptions.get(PARTIAL_FILTER_EXPRESSION_KEY), entity));
227230
}
228231

232+
@SuppressWarnings("NullAway")
229233
private static IndexOptions addDefaultCollationIfRequired(IndexOptions ops,
230234
@Nullable MongoPersistentEntity<?> entity) {
231235

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.data.mongodb.core;
1717

18+
import org.jspecify.annotations.Nullable;
1819
import org.springframework.data.mongodb.MongoDatabaseFactory;
1920
import org.springframework.data.mongodb.core.convert.QueryMapper;
2021
import org.springframework.data.mongodb.core.index.IndexOperations;
@@ -43,7 +44,7 @@ class DefaultIndexOperationsProvider implements IndexOperationsProvider {
4344
}
4445

4546
@Override
46-
public IndexOperations indexOps(String collectionName, Class<?> type) {
47+
public IndexOperations indexOps(String collectionName, @Nullable Class<?> type) {
4748
return new DefaultIndexOperations(mongoDbFactory, collectionName, mapper, type);
4849
}
4950
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ public boolean skipEventPublishing() {
356356
return eventPublisher == null;
357357
}
358358

359-
@SuppressWarnings("rawtypes")
359+
@SuppressWarnings({"rawtypes","NullAway"})
360360
public <T> Mono<T> callback(Class<? extends EntityCallback> callbackType, T entity, String collectionName) {
361361

362362
if (skipEntityCallbacks()) {
@@ -366,7 +366,7 @@ public <T> Mono<T> callback(Class<? extends EntityCallback> callbackType, T enti
366366
return entityCallbacks.callback(callbackType, entity, collectionName);
367367
}
368368

369-
@SuppressWarnings("rawtypes")
369+
@SuppressWarnings({"rawtypes","NullAway"})
370370
public <T> Mono<T> callback(Class<? extends EntityCallback> callbackType, T entity, Document document,
371371
String collectionName) {
372372

@@ -377,6 +377,7 @@ public <T> Mono<T> callback(Class<? extends EntityCallback> callbackType, T enti
377377
return entityCallbacks.callback(callbackType, entity, document, collectionName);
378378
}
379379

380+
@SuppressWarnings("NullAway")
380381
public void publishEvent(ApplicationEvent event) {
381382

382383
if (skipEventPublishing()) {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ private DefaultReactiveIndexOperations(ReactiveMongoOperations mongoOperations,
8989
}
9090

9191
@Override
92+
@SuppressWarnings("NullAway")
9293
public Mono<String> ensureIndex(IndexDefinition indexDefinition) {
9394

9495
return mongoOperations.execute(collectionName, collection -> {
@@ -163,6 +164,7 @@ private IndexOptions addPartialFilterIfPresent(IndexOptions ops, Document source
163164
queryMapper.getMappedObject((Document) sourceOptions.get(PARTIAL_FILTER_EXPRESSION_KEY), entity));
164165
}
165166

167+
@SuppressWarnings("NullAway")
166168
private static IndexOptions addDefaultCollationIfRequired(IndexOptions ops,
167169
@Nullable MongoPersistentEntity<?> entity) {
168170

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

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import org.bson.Document;
3030
import org.bson.types.ObjectId;
31+
import org.jspecify.annotations.Nullable;
3132
import org.springframework.dao.DataAccessException;
3233
import org.springframework.data.mongodb.core.mapping.FieldName;
3334
import org.springframework.data.mongodb.core.script.ExecutableMongoScript;
@@ -85,38 +86,27 @@ public NamedMongoScript register(NamedMongoScript script) {
8586
}
8687

8788
@Override
88-
public Object execute(ExecutableMongoScript script, Object... args) {
89+
public @Nullable Object execute(ExecutableMongoScript script, Object... args) {
8990

9091
Assert.notNull(script, "Script must not be null");
9192

92-
return mongoOperations.execute(new DbCallback<Object>() {
93+
return mongoOperations.execute(db -> {
9394

94-
@Override
95-
public Object doInDB(MongoDatabase db) throws MongoException, DataAccessException {
96-
97-
Document command = new Document("$eval", script.getCode());
98-
BasicDBList commandArgs = new BasicDBList();
99-
commandArgs.addAll(Arrays.asList(convertScriptArgs(false, args)));
100-
command.append("args", commandArgs);
101-
return db.runCommand(command).get("retval");
102-
}
103-
});
95+
Document command = new Document("$eval", script.getCode());
96+
BasicDBList commandArgs = new BasicDBList();
97+
commandArgs.addAll(Arrays.asList(convertScriptArgs(false, args)));
98+
command.append("args", commandArgs);
99+
return db.runCommand(command).get("retval");
100+
});
104101
}
105102

106103
@Override
107-
public Object call(String scriptName, Object... args) {
104+
public @Nullable Object call(String scriptName, Object... args) {
108105

109106
Assert.hasText(scriptName, "ScriptName must not be null or empty");
110107

111-
return mongoOperations.execute(new DbCallback<Object>() {
112-
113-
@Override
114-
public Object doInDB(MongoDatabase db) throws MongoException, DataAccessException {
115-
116-
return db.runCommand(new Document("eval", String.format("%s(%s)", scriptName, convertAndJoinScriptArgs(args))))
117-
.get("retval");
118-
}
119-
});
108+
return mongoOperations.execute(db -> db.runCommand(new Document("eval", String.format("%s(%s)", scriptName, convertAndJoinScriptArgs(args))))
109+
.get("retval"));
120110
}
121111

122112
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.springframework.data.mongodb.core;
1717

1818
import com.mongodb.WriteConcern;
19+
import org.jspecify.annotations.Nullable;
1920

2021
/**
2122
* Default {@link WriteConcernResolver} resolving the {@link WriteConcern} from the given {@link MongoAction}.
@@ -26,7 +27,7 @@ enum DefaultWriteConcernResolver implements WriteConcernResolver {
2627

2728
INSTANCE;
2829

29-
public WriteConcern resolve(MongoAction action) {
30+
public @Nullable WriteConcern resolve(MongoAction action) {
3031
return action.getDefaultWriteConcern();
3132
}
3233
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public void setEventsEnabled(boolean eventsEnabled) {
4747
*
4848
* @param event the application event.
4949
*/
50+
@SuppressWarnings("NullAway")
5051
public void publishEvent(Object event) {
5152

5253
if (canPublishEvent()) {

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.stream.Stream;
1919

20+
import org.jspecify.annotations.Nullable;
2021
import org.springframework.data.mongodb.core.aggregation.Aggregation;
2122
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
2223
import org.springframework.data.mongodb.core.aggregation.TypedAggregation;
@@ -55,11 +56,11 @@ static class ExecutableAggregationSupport<T>
5556

5657
private final MongoTemplate template;
5758
private final Class<T> domainType;
58-
private final Aggregation aggregation;
59-
private final String collection;
59+
private final @Nullable Aggregation aggregation;
60+
private final @Nullable String collection;
6061

61-
public ExecutableAggregationSupport(MongoTemplate template, Class<T> domainType, Aggregation aggregation,
62-
String collection) {
62+
public ExecutableAggregationSupport(MongoTemplate template, Class<T> domainType, @Nullable Aggregation aggregation,
63+
@Nullable String collection) {
6364
this.template = template;
6465
this.domainType = domainType;
6566
this.aggregation = aggregation;
@@ -84,15 +85,19 @@ public TerminatingAggregation<T> by(Aggregation aggregation) {
8485

8586
@Override
8687
public AggregationResults<T> all() {
88+
89+
Assert.notNull(aggregation, "Aggregation must be set first");
8790
return template.aggregate(aggregation, getCollectionName(aggregation), domainType);
8891
}
8992

9093
@Override
9194
public Stream<T> stream() {
95+
96+
Assert.notNull(aggregation, "Aggregation must be set first");
9297
return template.aggregateStream(aggregation, getCollectionName(aggregation), domainType);
9398
}
9499

95-
private String getCollectionName(Aggregation aggregation) {
100+
private String getCollectionName(@Nullable Aggregation aggregation) {
96101

97102
if (StringUtils.hasText(collection)) {
98103
return collection;

0 commit comments

Comments
 (0)