diff --git a/bosk-mongo/build.gradle b/bosk-mongo/build.gradle index f3d3fe5c..8b97616d 100644 --- a/bosk-mongo/build.gradle +++ b/bosk-mongo/build.gradle @@ -26,7 +26,9 @@ compileTestJava { dependencies { api project(":bosk-core") - api 'org.mongodb:mongodb-driver-sync:4.1.2' + api 'org.mongodb:mongodb-driver-sync:5.1.2' + implementation 'com.github.spotbugs:spotbugs-annotations:4.8.6' // To stop warnings about When from MongoDB driver + // Allows us to annotate status objects so they're handy to serialize with jackson implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.17.2' diff --git a/bosk-mongo/src/main/java/works/bosk/drivers/mongo/TransactionalCollection.java b/bosk-mongo/src/main/java/works/bosk/drivers/mongo/TransactionalCollection.java index b2052674..9eb8bcad 100644 --- a/bosk-mongo/src/main/java/works/bosk/drivers/mongo/TransactionalCollection.java +++ b/bosk-mongo/src/main/java/works/bosk/drivers/mongo/TransactionalCollection.java @@ -14,6 +14,7 @@ import com.mongodb.client.DistinctIterable; import com.mongodb.client.FindIterable; import com.mongodb.client.ListIndexesIterable; +import com.mongodb.client.ListSearchIndexesIterable; import com.mongodb.client.MapReduceIterable; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; @@ -21,6 +22,7 @@ import com.mongodb.client.model.CountOptions; import com.mongodb.client.model.CreateIndexOptions; import com.mongodb.client.model.DeleteOptions; +import com.mongodb.client.model.DropCollectionOptions; import com.mongodb.client.model.DropIndexOptions; import com.mongodb.client.model.EstimatedDocumentCountOptions; import com.mongodb.client.model.FindOneAndDeleteOptions; @@ -32,6 +34,7 @@ import com.mongodb.client.model.InsertOneOptions; import com.mongodb.client.model.RenameCollectionOptions; import com.mongodb.client.model.ReplaceOptions; +import com.mongodb.client.model.SearchIndexModel; import com.mongodb.client.model.UpdateOptions; import com.mongodb.client.model.WriteModel; import com.mongodb.client.result.DeleteResult; @@ -377,18 +380,22 @@ public ChangeStreamIterable watch(ClientSession clientSession return this.downstream.watch(clientSession, pipeline, resultClass); } + @SuppressWarnings("deprecation") public MapReduceIterable mapReduce(String mapFunction, String reduceFunction) { return this.downstream.mapReduce(currentSession(), mapFunction, reduceFunction); } + @SuppressWarnings("deprecation") public MapReduceIterable mapReduce(String mapFunction, String reduceFunction, Class resultClass) { return this.downstream.mapReduce(currentSession(), mapFunction, reduceFunction, resultClass); } + @SuppressWarnings("deprecation") public MapReduceIterable mapReduce(ClientSession clientSession, String mapFunction, String reduceFunction) { return this.downstream.mapReduce(clientSession, mapFunction, reduceFunction); } + @SuppressWarnings("deprecation") public MapReduceIterable mapReduce(ClientSession clientSession, String mapFunction, String reduceFunction, Class resultClass) { return this.downstream.mapReduce(clientSession, mapFunction, reduceFunction, resultClass); } @@ -625,6 +632,51 @@ public void drop(ClientSession clientSession) { this.downstream.drop(clientSession); } + @Override + public void drop(DropCollectionOptions dropCollectionOptions) { + this.downstream.drop(dropCollectionOptions); + } + + @Override + public void drop(ClientSession clientSession, DropCollectionOptions dropCollectionOptions) { + this.downstream.drop(clientSession, dropCollectionOptions); + } + + @Override + public String createSearchIndex(String indexName, Bson definition) { + return downstream.createSearchIndex(indexName, definition); + } + + @Override + public String createSearchIndex(Bson definition) { + return downstream.createSearchIndex(definition); + } + + @Override + public List createSearchIndexes(List searchIndexModels) { + return downstream.createSearchIndexes(searchIndexModels); + } + + @Override + public void updateSearchIndex(String indexName, Bson definition) { + downstream.updateSearchIndex(indexName, definition); + } + + @Override + public void dropSearchIndex(String indexName) { + downstream.dropSearchIndex(indexName); + } + + @Override + public ListSearchIndexesIterable listSearchIndexes() { + return downstream.listSearchIndexes(); + } + + @Override + public ListSearchIndexesIterable listSearchIndexes(Class tResultClass) { + return downstream.listSearchIndexes(tResultClass); + } + public String createIndex(Bson keys) { return this.downstream.createIndex(currentSession(), keys); } diff --git a/bosk-mongo/src/test/java/works/bosk/drivers/mongo/DemultiplexerTest.java b/bosk-mongo/src/test/java/works/bosk/drivers/mongo/DemultiplexerTest.java index 5e700ce0..ce113df9 100644 --- a/bosk-mongo/src/test/java/works/bosk/drivers/mongo/DemultiplexerTest.java +++ b/bosk-mongo/src/test/java/works/bosk/drivers/mongo/DemultiplexerTest.java @@ -103,12 +103,12 @@ static ChangeStreamDocument event(BsonDocument lsid, long txnNumbe .append("coll", new BsonString("collection")) .append("db", new BsonString("database")); return new ChangeStreamDocument<>( - OperationType.OTHER, + OperationType.OTHER.getValue(), new BsonDocument("_id", new BsonString("resumeToken")), ns, ns, - null, null, null, null, + null, null, null, null, null, new BsonInt64(txnNumber), - lsid - ); + lsid, + null, null, null); } } diff --git a/bosk-mongo/src/test/java/works/bosk/drivers/mongo/MongoService.java b/bosk-mongo/src/test/java/works/bosk/drivers/mongo/MongoService.java index 7e000654..ca277661 100644 --- a/bosk-mongo/src/test/java/works/bosk/drivers/mongo/MongoService.java +++ b/bosk-mongo/src/test/java/works/bosk/drivers/mongo/MongoService.java @@ -65,9 +65,10 @@ public void close() { } private static GenericContainer mongoContainer() { + // For some reason, creating a MongoDBContainer makes the Hanoi test WAY slower, like 100x GenericContainer result = new GenericContainer<>( new ImageFromDockerfile().withDockerfileFromBuilder(builder -> builder - .from("mongo:4.4") + .from("mongo:7.0") .run("echo \"rs.initiate()\" > /docker-entrypoint-initdb.d/rs-initiate.js") .cmd("mongod", "--replSet", "rsLonesome", "--port", "27017", "--bind_ip_all") .build()))