25
25
import org .bson .BsonTimestamp ;
26
26
import org .bson .BsonValue ;
27
27
import org .bson .Document ;
28
+
28
29
import org .springframework .data .mongodb .core .aggregation .Aggregation ;
29
30
import org .springframework .data .mongodb .core .query .Collation ;
30
31
import org .springframework .lang .Nullable ;
@@ -52,7 +53,7 @@ public class ChangeStreamOptions {
52
53
private @ Nullable FullDocument fullDocumentLookup ;
53
54
private @ Nullable Collation collation ;
54
55
private @ Nullable Object resumeTimestamp ;
55
- private Resume resume = Resume .RESUME_AFTER ;
56
+ private Resume resume = Resume .UNDEFINED ;
56
57
57
58
protected ChangeStreamOptions () {}
58
59
@@ -161,6 +162,8 @@ private static <T> Object doGetTimestamp(Object timestamp, Class<T> targetType)
161
162
*/
162
163
enum Resume {
163
164
165
+ UNDEFINED ,
166
+
164
167
/**
165
168
* @see com.mongodb.client.ChangeStreamIterable#startAfter(BsonDocument)
166
169
*/
@@ -185,7 +188,7 @@ public static class ChangeStreamOptionsBuilder {
185
188
private @ Nullable FullDocument fullDocumentLookup ;
186
189
private @ Nullable Collation collation ;
187
190
private @ Nullable Object resumeTimestamp ;
188
- private Resume resume = Resume .RESUME_AFTER ;
191
+ private Resume resume = Resume .UNDEFINED ;
189
192
190
193
private ChangeStreamOptionsBuilder () {}
191
194
@@ -253,6 +256,11 @@ public ChangeStreamOptionsBuilder resumeToken(BsonValue resumeToken) {
253
256
Assert .notNull (resumeToken , "ResumeToken must not be null!" );
254
257
255
258
this .resumeToken = resumeToken ;
259
+
260
+ if (this .resume == Resume .UNDEFINED ) {
261
+ this .resume = Resume .RESUME_AFTER ;
262
+ }
263
+
256
264
return this ;
257
265
}
258
266
@@ -319,7 +327,7 @@ public ChangeStreamOptionsBuilder resumeAt(BsonTimestamp resumeTimestamp) {
319
327
public ChangeStreamOptionsBuilder resumeAfter (BsonValue resumeToken ) {
320
328
321
329
resumeToken (resumeToken );
322
- resume = Resume .RESUME_AFTER ;
330
+ this . resume = Resume .RESUME_AFTER ;
323
331
324
332
return this ;
325
333
}
@@ -334,7 +342,7 @@ public ChangeStreamOptionsBuilder resumeAfter(BsonValue resumeToken) {
334
342
public ChangeStreamOptionsBuilder startAfter (BsonValue resumeToken ) {
335
343
336
344
resumeToken (resumeToken );
337
- resume = Resume .START_AFTER ;
345
+ this . resume = Resume .START_AFTER ;
338
346
339
347
return this ;
340
348
}
@@ -346,12 +354,12 @@ public ChangeStreamOptions build() {
346
354
347
355
ChangeStreamOptions options = new ChangeStreamOptions ();
348
356
349
- options .filter = filter ;
350
- options .resumeToken = resumeToken ;
351
- options .fullDocumentLookup = fullDocumentLookup ;
352
- options .collation = collation ;
353
- options .resumeTimestamp = resumeTimestamp ;
354
- options .resume = resume ;
357
+ options .filter = this . filter ;
358
+ options .resumeToken = this . resumeToken ;
359
+ options .fullDocumentLookup = this . fullDocumentLookup ;
360
+ options .collation = this . collation ;
361
+ options .resumeTimestamp = this . resumeTimestamp ;
362
+ options .resume = this . resume ;
355
363
356
364
return options ;
357
365
}
0 commit comments