Skip to content

Commit a5a4c6d

Browse files
mp911dechristophstrobl
authored andcommitted
DATAMONGO-1687 - Initialize collation in CollectionOptions eagerly.
CollectionOptions.collation is initialized with Optional.empty() to guard collection creation against null dereference. Original Pull Request: #462
1 parent 5885d08 commit a5a4c6d

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ private CollectionOptions(Integer size, Integer maxDocuments, Boolean capped, Op
5353
this.collation = collation;
5454
}
5555

56-
private CollectionOptions() {}
56+
private CollectionOptions() {
57+
this.collation = Optional.empty();
58+
}
5759

5860
/**
5961
* Create new {@link CollectionOptions} by just providing the {@link Collation} to use.

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,6 @@ public class MongoTemplateTests {
114114

115115
private static final org.springframework.data.util.Version TWO_DOT_FOUR = org.springframework.data.util.Version
116116
.parse("2.4");
117-
private static final org.springframework.data.util.Version TWO_DOT_EIGHT = org.springframework.data.util.Version
118-
.parse("2.8");
119117
private static final org.springframework.data.util.Version THREE_DOT_FOUR = org.springframework.data.util.Version
120118
.parse("3.4");
121119

@@ -333,6 +331,26 @@ public void rejectsDuplicateIdInInsertAll() {
333331
template.insertAll(records);
334332
}
335333

334+
@Test // DATAMONGO-1687
335+
public void createCappedCollection() {
336+
337+
template.createCollection(Person.class, CollectionOptions.empty().capped(1000).maxDocuments(1000));
338+
339+
org.bson.Document collectionOptions = getCollectionInfo(template.getCollectionName(Person.class)).get("options",
340+
org.bson.Document.class);
341+
assertThat(collectionOptions.get("capped"), is(true));
342+
}
343+
344+
private org.bson.Document getCollectionInfo(String collectionName) {
345+
346+
return template.execute(db -> {
347+
348+
org.bson.Document result = db.runCommand(new org.bson.Document().append("listCollections", 1).append("filter",
349+
new org.bson.Document("name", collectionName)));
350+
return (org.bson.Document) result.get("cursor", org.bson.Document.class).get("firstBatch", List.class).get(0);
351+
});
352+
}
353+
336354
@Test
337355
@SuppressWarnings("deprecation")
338356
public void testEnsureIndex() throws Exception {

0 commit comments

Comments
 (0)