Skip to content

Commit aa35802

Browse files
committed
clean up
1 parent 5b223d2 commit aa35802

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

src/main/java/com/mongodb/quickstart/ChangeStreams.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@
88
import org.bson.BsonDocument;
99
import org.bson.codecs.configuration.CodecRegistry;
1010
import org.bson.codecs.pojo.PojoCodecProvider;
11+
import org.bson.conversions.Bson;
1112

13+
import java.util.List;
1214
import java.util.function.Consumer;
1315
import java.util.logging.Level;
1416
import java.util.logging.Logger;
1517

1618
import static com.mongodb.client.model.Aggregates.match;
1719
import static com.mongodb.client.model.Filters.eq;
20+
import static com.mongodb.client.model.Filters.in;
21+
import static com.mongodb.client.model.changestream.FullDocument.UPDATE_LOOKUP;
1822
import static java.util.Arrays.asList;
23+
import static java.util.Collections.singletonList;
1924
import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
2025
import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
2126

@@ -34,28 +39,32 @@ public static void main(String[] args) {
3439
try (MongoClient mongoClient = MongoClients.create(clientSettings)) {
3540
MongoDatabase db = mongoClient.getDatabase("sample_training");
3641
MongoCollection<Grade> grades = db.getCollection("grades", Grade.class);
42+
List<Bson> pipeline;
3743

3844
// Only uncomment one example at a time. Follow instructions for each individually then kill all remaining processes.
3945

4046
/** => Example 1: print all the write operations.
4147
* => Start "ChangeStreams" then "MappingPOJOs" to see some change events.
4248
*/
43-
grades.watch().forEach(print());
49+
grades.watch().forEach(printEvent());
4450

4551
/** => Example 2: print only insert and delete operations.
4652
* => Start "ChangeStreams" then "MappingPOJOs" to see some change events.
4753
*/
48-
// grades.watch(asList(match(in("operationType", asList("insert", "delete"))))).forEach(print());
54+
// pipeline = singletonList(match(in("operationType", asList("insert", "delete"))));
55+
// grades.watch(pipeline).forEach(printEvent());
4956

5057
/** => Example 3: print only updates without fullDocument.
5158
* => Start "ChangeStreams" then "Update" to see some change events (start "Create" before if not done earlier).
5259
*/
53-
// grades.watch(asList(match(eq("operationType", "update")))).forEach(print());
60+
// pipeline = singletonList(match(eq("operationType", "update")));
61+
// grades.watch(pipeline).forEach(printEvent());
5462

5563
/** => Example 4: print only updates with fullDocument.
5664
* => Start "ChangeStreams" then "Update" to see some change events.
5765
*/
58-
// grades.watch(asList(match(eq("operationType", "update")))).fullDocument(UPDATE_LOOKUP).forEach(print());
66+
// pipeline = singletonList(match(eq("operationType", "update")));
67+
// grades.watch(pipeline).fullDocument(UPDATE_LOOKUP).forEach(printEvent());
5968

6069
/**
6170
* => Example 5: iterating using a cursor and a while loop + remembering a resumeToken then restart the Change Streams.
@@ -66,8 +75,9 @@ public static void main(String[] args) {
6675
}
6776

6877
private static void exampleWithResumeToken(MongoCollection<Grade> grades) {
69-
MongoChangeStreamCursor<ChangeStreamDocument<Grade>> cursor = grades.watch(asList(match(eq("operationType", "update"))))
70-
.cursor();
78+
List<Bson> pipeline = singletonList(match(eq("operationType", "update")));
79+
ChangeStreamIterable<Grade> changeStream = grades.watch(pipeline);
80+
MongoChangeStreamCursor<ChangeStreamDocument<Grade>> cursor = changeStream.cursor();
7181
System.out.println("==> Going through the stream a first time & record a resumeToken");
7282
int indexOfOperationToRestartFrom = 5;
7383
int indexOfIncident = 8;
@@ -83,10 +93,11 @@ private static void exampleWithResumeToken(MongoCollection<Grade> grades) {
8393
}
8494
System.out.println("==> Let's imagine something wrong happened and I need to restart my Change Stream.");
8595
System.out.println("==> Starting from resumeToken=" + resumeToken);
86-
grades.watch(asList(match(eq("operationType", "update")))).resumeAfter(resumeToken).forEach(print());
96+
assert resumeToken != null;
97+
grades.watch(pipeline).resumeAfter(resumeToken).forEach(printEvent());
8798
}
8899

89-
private static Consumer<ChangeStreamDocument<Grade>> print() {
100+
private static Consumer<ChangeStreamDocument<Grade>> printEvent() {
90101
return System.out::println;
91102
}
92103
}

0 commit comments

Comments
 (0)