Skip to content

Commit 4379ce1

Browse files
committed
JAVA-2641: Make com.mongodb.async.client and com.mongodb.async.client.gridfs a NonNullApi and add Nullable annotations to methods and parameters that require it
1 parent 2de302f commit 4379ce1

35 files changed

+201
-148
lines changed

driver-async/src/main/com/mongodb/async/client/AbstractSubscription.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.mongodb.async.client;
1818

19+
import com.mongodb.lang.Nullable;
20+
1921
import java.util.List;
2022
import java.util.concurrent.ConcurrentLinkedQueue;
2123

@@ -103,14 +105,14 @@ synchronized long getRequested() {
103105
return requested;
104106
}
105107

106-
void addToQueue(final TResult result) {
108+
void addToQueue(@Nullable final TResult result) {
107109
if (result != null) {
108110
resultsQueue.add(result);
109111
}
110112
tryProcessResultsQueue();
111113
}
112114

113-
void addToQueue(final List<TResult> results) {
115+
void addToQueue(@Nullable final List<TResult> results) {
114116
if (results != null) {
115117
resultsQueue.addAll(results);
116118
}

driver-async/src/main/com/mongodb/async/client/AggregateIterable.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.mongodb.async.SingleResultCallback;
2020
import com.mongodb.client.model.Collation;
21+
import com.mongodb.lang.Nullable;
2122
import org.bson.conversions.Bson;
2223

2324
import java.util.concurrent.TimeUnit;
@@ -38,7 +39,7 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
3839
* @mongodb.driver.manual reference/command/aggregate/ Aggregation
3940
* @mongodb.server.release 2.6
4041
*/
41-
AggregateIterable<TResult> allowDiskUse(Boolean allowDiskUse);
42+
AggregateIterable<TResult> allowDiskUse(@Nullable Boolean allowDiskUse);
4243

4344
/**
4445
* Sets the maximum execution time on the server for this operation.
@@ -75,7 +76,7 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
7576
* command.
7677
*/
7778
@Deprecated
78-
AggregateIterable<TResult> useCursor(Boolean useCursor);
79+
AggregateIterable<TResult> useCursor(@Nullable Boolean useCursor);
7980

8081
/**
8182
* Aggregates documents according to the specified aggregation pipeline, which must end with a $out stage.
@@ -106,7 +107,7 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
106107
* @mongodb.driver.manual reference/command/aggregate/ Aggregation
107108
* @mongodb.server.release 3.2
108109
*/
109-
AggregateIterable<TResult> bypassDocumentValidation(Boolean bypassDocumentValidation);
110+
AggregateIterable<TResult> bypassDocumentValidation(@Nullable Boolean bypassDocumentValidation);
110111

111112
/**
112113
* Sets the collation options
@@ -117,7 +118,7 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
117118
* @since 3.4
118119
* @mongodb.server.release 3.4
119120
*/
120-
AggregateIterable<TResult> collation(Collation collation);
121+
AggregateIterable<TResult> collation(@Nullable Collation collation);
121122

122123
/**
123124
* Sets the comment to the aggregation. A null value means no comment is set.
@@ -127,7 +128,7 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
127128
* @since 3.6
128129
* @mongodb.server.release 3.6
129130
*/
130-
AggregateIterable<TResult> comment(String comment);
131+
AggregateIterable<TResult> comment(@Nullable String comment);
131132

132133
/**
133134
* Sets the hint for which index to use. A null value means no hint is set.
@@ -137,5 +138,5 @@ public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
137138
* @since 3.6
138139
* @mongodb.server.release 3.6
139140
*/
140-
AggregateIterable<TResult> hint(Bson hint);
141+
AggregateIterable<TResult> hint(@Nullable Bson hint);
141142
}

driver-async/src/main/com/mongodb/async/client/AggregateIterableImpl.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.mongodb.client.model.Collation;
2626
import com.mongodb.client.model.FindOptions;
2727
import com.mongodb.internal.operation.AsyncOperations;
28+
import com.mongodb.lang.Nullable;
2829
import com.mongodb.operation.AsyncOperationExecutor;
2930
import com.mongodb.operation.AsyncReadOperation;
3031
import com.mongodb.operation.AsyncWriteOperation;
@@ -57,7 +58,7 @@ class AggregateIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResul
5758
private String comment;
5859
private Bson hint;
5960

60-
AggregateIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
61+
AggregateIterableImpl(@Nullable final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
6162
final Class<TResult> resultClass, final CodecRegistry codecRegistry, final ReadPreference readPreference,
6263
final ReadConcern readConcern, final WriteConcern writeConcern, final AsyncOperationExecutor executor,
6364
final List<? extends Bson> pipeline) {
@@ -83,7 +84,7 @@ public void toCollection(final SingleResultCallback<Void> callback) {
8384
}
8485

8586
@Override
86-
public AggregateIterable<TResult> allowDiskUse(final Boolean allowDiskUse) {
87+
public AggregateIterable<TResult> allowDiskUse(@Nullable final Boolean allowDiskUse) {
8788
this.allowDiskUse = allowDiskUse;
8889
return this;
8990
}
@@ -103,7 +104,7 @@ public AggregateIterable<TResult> maxTime(final long maxTime, final TimeUnit tim
103104

104105
@Override
105106
@Deprecated
106-
public AggregateIterable<TResult> useCursor(final Boolean useCursor) {
107+
public AggregateIterable<TResult> useCursor(@Nullable final Boolean useCursor) {
107108
this.useCursor = useCursor;
108109
return this;
109110
}
@@ -116,25 +117,25 @@ public AggregateIterable<TResult> maxAwaitTime(final long maxAwaitTime, final Ti
116117
}
117118

118119
@Override
119-
public AggregateIterable<TResult> bypassDocumentValidation(final Boolean bypassDocumentValidation) {
120+
public AggregateIterable<TResult> bypassDocumentValidation(@Nullable final Boolean bypassDocumentValidation) {
120121
this.bypassDocumentValidation = bypassDocumentValidation;
121122
return this;
122123
}
123124

124125
@Override
125-
public AggregateIterable<TResult> collation(final Collation collation) {
126+
public AggregateIterable<TResult> collation(@Nullable final Collation collation) {
126127
this.collation = collation;
127128
return this;
128129
}
129130

130131
@Override
131-
public AggregateIterable<TResult> comment(final String comment) {
132+
public AggregateIterable<TResult> comment(@Nullable final String comment) {
132133
this.comment = comment;
133134
return this;
134135
}
135136

136137
@Override
137-
public AggregateIterable<TResult> hint(final Bson hint) {
138+
public AggregateIterable<TResult> hint(@Nullable final Bson hint) {
138139
this.hint = hint;
139140
return this;
140141
}
@@ -149,8 +150,9 @@ AsyncReadOperation<AsyncBatchCursor<TResult>> asAsyncReadOperation() {
149150
operations.aggregateToCollection(pipeline, maxTimeMS, allowDiskUse, bypassDocumentValidation, collation, hint, comment);
150151

151152
FindOptions findOptions = new FindOptions().collation(collation);
152-
if (getBatchSize() != null) {
153-
findOptions.batchSize(getBatchSize());
153+
Integer batchSize = getBatchSize();
154+
if (batchSize != null) {
155+
findOptions.batchSize(batchSize);
154156
}
155157
AsyncReadOperation<AsyncBatchCursor<TResult>> findOperation =
156158
operations.find(new MongoNamespace(namespace.getDatabaseName(), outCollection.asString().getValue()),
@@ -164,6 +166,7 @@ AsyncReadOperation<AsyncBatchCursor<TResult>> asAsyncReadOperation() {
164166

165167
}
166168

169+
@Nullable
167170
private BsonValue getOutCollection() {
168171
if (pipeline.size() == 0) {
169172
return null;

driver-async/src/main/com/mongodb/async/client/AsyncOperationExecutorImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.mongodb.binding.AsyncWriteBinding;
2525
import com.mongodb.diagnostics.logging.Logger;
2626
import com.mongodb.diagnostics.logging.Loggers;
27+
import com.mongodb.lang.Nullable;
2728
import com.mongodb.operation.AsyncOperationExecutor;
2829
import com.mongodb.operation.AsyncReadOperation;
2930
import com.mongodb.operation.AsyncWriteOperation;
@@ -84,7 +85,7 @@ public <T> void execute(final AsyncWriteOperation<T> operation, final SingleResu
8485
}
8586

8687
@Override
87-
public <T> void execute(final AsyncWriteOperation<T> operation, final ClientSession session,
88+
public <T> void execute(final AsyncWriteOperation<T> operation, @Nullable final ClientSession session,
8889
final SingleResultCallback<T> callback) {
8990
notNull("operation", operation);
9091
notNull("callback", callback);
@@ -112,7 +113,7 @@ public void onResult(final T result, final Throwable t) {
112113
});
113114
}
114115

115-
private AsyncReadWriteBinding getReadWriteBinding(final ReadPreference readPreference, final ClientSession session,
116+
private AsyncReadWriteBinding getReadWriteBinding(final ReadPreference readPreference, @Nullable final ClientSession session,
116117
final boolean ownsSession) {
117118
notNull("readPreference", readPreference);
118119
AsyncReadWriteBinding readWriteBinding = new AsyncClusterBinding(mongoClient.getCluster(), readPreference);

driver-async/src/main/com/mongodb/async/client/ChangeStreamIterable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.mongodb.client.model.Collation;
2020
import com.mongodb.client.model.changestream.ChangeStreamDocument;
2121
import com.mongodb.client.model.changestream.FullDocument;
22+
import com.mongodb.lang.Nullable;
2223
import org.bson.BsonDocument;
2324

2425
import java.util.concurrent.TimeUnit;
@@ -77,7 +78,7 @@ public interface ChangeStreamIterable<TResult> extends MongoIterable<ChangeStrea
7778
* @param collation the collation options to use
7879
* @return this
7980
*/
80-
ChangeStreamIterable<TResult> collation(Collation collation);
81+
ChangeStreamIterable<TResult> collation(@Nullable Collation collation);
8182

8283
/**
8384
* Returns a {@code MongoIterable} containing the results of the change stream based on the document class provided.

driver-async/src/main/com/mongodb/async/client/ChangeStreamIterableImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.mongodb.client.model.Collation;
2424
import com.mongodb.client.model.changestream.ChangeStreamDocument;
2525
import com.mongodb.client.model.changestream.FullDocument;
26+
import com.mongodb.lang.Nullable;
2627
import com.mongodb.operation.AsyncOperationExecutor;
2728
import com.mongodb.operation.AsyncReadOperation;
2829
import com.mongodb.operation.ChangeStreamOperation;
@@ -52,7 +53,7 @@ final class ChangeStreamIterableImpl<TResult> extends MongoIterableImpl<ChangeSt
5253
private Collation collation;
5354

5455

55-
ChangeStreamIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final CodecRegistry codecRegistry,
56+
ChangeStreamIterableImpl(@Nullable final ClientSession clientSession, final MongoNamespace namespace, final CodecRegistry codecRegistry,
5657
final ReadPreference readPreference, final ReadConcern readConcern, final AsyncOperationExecutor executor,
5758
final List<? extends Bson> pipeline, final Class<TResult> resultClass) {
5859
super(clientSession, executor, readConcern, readPreference);
@@ -88,7 +89,7 @@ public ChangeStreamIterable<TResult> maxAwaitTime(final long maxAwaitTime, final
8889
}
8990

9091
@Override
91-
public ChangeStreamIterable<TResult> collation(final Collation collation) {
92+
public ChangeStreamIterable<TResult> collation(@Nullable final Collation collation) {
9293
this.collation = notNull("collation", collation);
9394
return this;
9495
}

driver-async/src/main/com/mongodb/async/client/ClientSessionHelper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.mongodb.connection.ServerDescription;
2525
import com.mongodb.internal.session.ClientSessionImpl;
2626
import com.mongodb.internal.session.ServerSessionPool;
27+
import com.mongodb.lang.Nullable;
2728
import com.mongodb.selector.ServerSelector;
2829
import com.mongodb.session.ClientSession;
2930

@@ -40,7 +41,7 @@ class ClientSessionHelper {
4041
this.serverSessionPool = serverSessionPool;
4142
}
4243

43-
void withClientSession(final ClientSession clientSessionFromOperation, final SingleResultCallback<ClientSession> callback) {
44+
void withClientSession(@Nullable final ClientSession clientSessionFromOperation, final SingleResultCallback<ClientSession> callback) {
4445
if (clientSessionFromOperation != null) {
4546
isTrue("ClientSession from same MongoClient", clientSessionFromOperation.getOriginator() == mongoClient);
4647
callback.onResult(clientSessionFromOperation, null);

driver-async/src/main/com/mongodb/async/client/DistinctIterable.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919

2020
import com.mongodb.client.model.Collation;
21+
import com.mongodb.lang.Nullable;
2122
import org.bson.conversions.Bson;
2223

2324
import java.util.concurrent.TimeUnit;
@@ -37,7 +38,7 @@ public interface DistinctIterable<TResult> extends MongoIterable<TResult> {
3738
* @return this
3839
* @mongodb.driver.manual reference/method/db.collection.find/ Filter
3940
*/
40-
DistinctIterable<TResult> filter(Bson filter);
41+
DistinctIterable<TResult> filter(@Nullable Bson filter);
4142

4243
/**
4344
* Sets the maximum execution time on the server for this operation.
@@ -66,6 +67,6 @@ public interface DistinctIterable<TResult> extends MongoIterable<TResult> {
6667
* @since 3.4
6768
* @mongodb.server.release 3.4
6869
*/
69-
DistinctIterable<TResult> collation(Collation collation);
70+
DistinctIterable<TResult> collation(@Nullable Collation collation);
7071

7172
}

driver-async/src/main/com/mongodb/async/client/DistinctIterableImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.mongodb.async.AsyncBatchCursor;
2323
import com.mongodb.client.model.Collation;
2424
import com.mongodb.internal.operation.AsyncOperations;
25+
import com.mongodb.lang.Nullable;
2526
import com.mongodb.operation.AsyncOperationExecutor;
2627
import com.mongodb.operation.AsyncReadOperation;
2728
import com.mongodb.session.ClientSession;
@@ -42,7 +43,7 @@ class DistinctIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResult
4243
private Collation collation;
4344

4445

45-
DistinctIterableImpl(final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
46+
DistinctIterableImpl(@Nullable final ClientSession clientSession, final MongoNamespace namespace, final Class<TDocument> documentClass,
4647
final Class<TResult> resultClass, final CodecRegistry codecRegistry, final ReadPreference readPreference,
4748
final ReadConcern readConcern, final AsyncOperationExecutor executor, final String fieldName, final Bson filter) {
4849
super(clientSession, executor, readConcern, readPreference);
@@ -53,7 +54,7 @@ class DistinctIterableImpl<TDocument, TResult> extends MongoIterableImpl<TResult
5354
}
5455

5556
@Override
56-
public DistinctIterable<TResult> filter(final Bson filter) {
57+
public DistinctIterable<TResult> filter(@Nullable final Bson filter) {
5758
this.filter = filter;
5859
return this;
5960
}
@@ -72,7 +73,7 @@ public DistinctIterable<TResult> batchSize(final int batchSize) {
7273
}
7374

7475
@Override
75-
public DistinctIterable<TResult> collation(final Collation collation) {
76+
public DistinctIterable<TResult> collation(@Nullable final Collation collation) {
7677
this.collation = collation;
7778
return this;
7879
}

0 commit comments

Comments
 (0)