Skip to content

Commit 2806ab0

Browse files
committed
Added notNull checks
To AsyncOperationExecutor and MongoIterables JAVA-2031
1 parent 300724f commit 2806ab0

19 files changed

+456
-7
lines changed

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

+6
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,21 @@ public void toCollection(final SingleResultCallback<Void> callback) {
108108

109109
@Override
110110
public void first(final SingleResultCallback<TResult> callback) {
111+
notNull("callback", callback);
111112
execute().first(callback);
112113
}
113114

114115
@Override
115116
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
117+
notNull("block", block);
118+
notNull("callback", callback);
116119
execute().forEach(block, callback);
117120
}
118121

119122
@Override
120123
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
124+
notNull("target", target);
125+
notNull("callback", callback);
121126
execute().into(target, callback);
122127
}
123128

@@ -128,6 +133,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
128133

129134
@Override
130135
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
136+
notNull("callback", callback);
131137
execute().batchCursor(callback);
132138
}
133139

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

+8
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import java.util.Collection;
2828
import java.util.List;
2929

30+
import static com.mongodb.assertions.Assertions.notNull;
31+
3032
class AwaitingWriteOperationIterable<T, W> implements MongoIterable<T> {
3133
private final MongoIterable<T> delegated;
3234
private final List<SingleResultCallback<Void>> callbacks = new ArrayList<SingleResultCallback<Void>>();
@@ -52,6 +54,7 @@ public void onResult(final W result, final Throwable t) {
5254

5355
@Override
5456
public void first(final SingleResultCallback<T> callback) {
57+
notNull("callback", callback);
5558
boolean localWriteCompleted;
5659

5760
synchronized (this) {
@@ -80,6 +83,8 @@ public void onResult(final Void result, final Throwable t) {
8083

8184
@Override
8285
public void forEach(final Block<? super T> block, final SingleResultCallback<Void> callback) {
86+
notNull("block", block);
87+
notNull("callback", callback);
8388
boolean localWriteCompleted;
8489

8590
synchronized (this) {
@@ -109,6 +114,8 @@ public void onResult(final Void result, final Throwable t) {
109114

110115
@Override
111116
public <A extends Collection<? super T>> void into(final A target, final SingleResultCallback<A> callback) {
117+
notNull("target", target);
118+
notNull("callback", callback);
112119
boolean localWriteCompleted;
113120

114121
synchronized (this) {
@@ -148,6 +155,7 @@ public AwaitingWriteOperationIterable<T, W> batchSize(final int batchSize) {
148155

149156
@Override
150157
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<T>> callback) {
158+
notNull("callback", callback);
151159
boolean localWriteCompleted;
152160

153161
synchronized (this) {

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

+6
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,21 @@ public DistinctIterable<TResult> batchSize(final int batchSize) {
7979

8080
@Override
8181
public void first(final SingleResultCallback<TResult> callback) {
82+
notNull("callback", callback);
8283
execute().first(callback);
8384
}
8485

8586
@Override
8687
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
88+
notNull("block", block);
89+
notNull("callback", callback);
8790
execute().forEach(block, callback);
8891
}
8992

9093
@Override
9194
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
95+
notNull("target", target);
96+
notNull("callback", callback);
9297
execute().into(target, callback);
9398
}
9499

@@ -99,6 +104,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
99104

100105
@Override
101106
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
107+
notNull("callback", callback);
102108
execute().batchCursor(callback);
103109
}
104110

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

+6
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,21 @@ public FindIterable<TResult> cursorType(final CursorType cursorType) {
134134

135135
@Override
136136
public void first(final SingleResultCallback<TResult> callback) {
137+
notNull("callback", callback);
137138
execute(createQueryOperation().batchSize(0).limit(-1)).first(callback);
138139
}
139140

140141
@Override
141142
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
143+
notNull("block", block);
144+
notNull("callback", callback);
142145
execute().forEach(block, callback);
143146
}
144147

145148
@Override
146149
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
150+
notNull("target", target);
151+
notNull("callback", callback);
147152
execute().into(target, callback);
148153
}
149154

@@ -154,6 +159,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
154159

155160
@Override
156161
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
162+
notNull("callback", callback);
157163
execute().batchCursor(callback);
158164
}
159165

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

+6
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,21 @@ public ListCollectionsIterable<TResult> batchSize(final int batchSize) {
7575

7676
@Override
7777
public void first(final SingleResultCallback<TResult> callback) {
78+
notNull("callback", callback);
7879
execute(createListCollectionsOperation().batchSize(-1)).first(callback);
7980
}
8081

8182
@Override
8283
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
84+
notNull("block", block);
85+
notNull("callback", callback);
8386
execute().forEach(block, callback);
8487
}
8588

8689
@Override
8790
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
91+
notNull("target", target);
92+
notNull("callback", callback);
8893
execute().into(target, callback);
8994
}
9095

@@ -95,6 +100,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
95100

96101
@Override
97102
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
103+
notNull("callback", callback);
98104
execute().batchCursor(callback);
99105
}
100106

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

+6
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,21 @@ public ListDatabasesIterable<TResult> maxTime(final long maxTime, final TimeUnit
5656

5757
@Override
5858
public void first(final SingleResultCallback<TResult> callback) {
59+
notNull("callback", callback);
5960
execute(createListDatabasesOperation()).first(callback);
6061
}
6162

6263
@Override
6364
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
65+
notNull("block", block);
66+
notNull("callback", callback);
6467
execute().forEach(block, callback);
6568
}
6669

6770
@Override
6871
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
72+
notNull("target", target);
73+
notNull("callback", callback);
6974
execute().into(target, callback);
7075
}
7176

@@ -82,6 +87,7 @@ public ListDatabasesIterableImpl<TResult> batchSize(final int batchSize) {
8287

8388
@Override
8489
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
90+
notNull("callback", callback);
8591
execute().batchCursor(callback);
8692
}
8793

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

+6
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,21 @@ public ListIndexesIterable<TResult> batchSize(final int batchSize) {
6666

6767
@Override
6868
public void first(final SingleResultCallback<TResult> callback) {
69+
notNull("callback", callback);
6970
execute(createListIndexesOperation().batchSize(-1)).first(callback);
7071
}
7172

7273
@Override
7374
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
75+
notNull("block", block);
76+
notNull("callback", callback);
7477
execute().forEach(block, callback);
7578
}
7679

7780
@Override
7881
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
82+
notNull("target", target);
83+
notNull("callback", callback);
7984
execute().into(target, callback);
8085
}
8186

@@ -86,6 +91,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
8691

8792
@Override
8893
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
94+
notNull("callback", callback);
8995
execute().batchCursor(callback);
9096
}
9197

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

+7
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ public MapReduceIterable<TResult> batchSize(final int batchSize) {
167167

168168
@Override
169169
public void toCollection(final SingleResultCallback<Void> callback) {
170+
notNull("callback", callback);
170171
if (inline) {
171172
throw new IllegalArgumentException("The options must specify a non-inline result");
172173
}
@@ -181,16 +182,21 @@ public void onResult(final MapReduceStatistics result, final Throwable t) {
181182

182183
@Override
183184
public void first(final SingleResultCallback<TResult> callback) {
185+
notNull("callback", callback);
184186
execute().first(callback);
185187
}
186188

187189
@Override
188190
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
191+
notNull("block", block);
192+
notNull("callback", callback);
189193
execute().forEach(block, callback);
190194
}
191195

192196
@Override
193197
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
198+
notNull("target", target);
199+
notNull("callback", callback);
194200
execute().into(target, callback);
195201
}
196202

@@ -201,6 +207,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
201207

202208
@Override
203209
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
210+
notNull("callback", callback);
204211
execute().batchCursor(callback);
205212
}
206213

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

+10-2
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@
2323

2424
import java.util.Collection;
2525

26+
import static org.bson.assertions.Assertions.notNull;
27+
2628
class MappingIterable<T, U> implements MongoIterable<U> {
2729
private final MongoIterable<T> iterable;
2830
private final Function<T, U> mapper;
2931

3032
public MappingIterable(final MongoIterable<T> iterable, final Function<T, U> mapper) {
31-
this.iterable = iterable;
32-
this.mapper = mapper;
33+
this.iterable = notNull("iterable", iterable);
34+
this.mapper = notNull("mapper", mapper);
3335
}
3436

3537
@Override
3638
public void first(final SingleResultCallback<U> callback) {
39+
notNull("callback", callback);
3740
iterable.first(new SingleResultCallback<T>() {
3841
@Override
3942
public void onResult(final T result, final Throwable t) {
@@ -48,6 +51,8 @@ public void onResult(final T result, final Throwable t) {
4851

4952
@Override
5053
public void forEach(final Block<? super U> block, final SingleResultCallback<Void> callback) {
54+
notNull("block", block);
55+
notNull("callback", callback);
5156
iterable.forEach(new Block<T>() {
5257
@Override
5358
public void apply(final T t) {
@@ -67,6 +72,8 @@ public void onResult(final Void result, final Throwable t) {
6772

6873
@Override
6974
public <A extends Collection<? super U>> void into(final A target, final SingleResultCallback<A> callback) {
75+
notNull("target", target);
76+
notNull("callback", callback);
7077
iterable.forEach(new Block<T>() {
7178
@Override
7279
public void apply(final T t) {
@@ -97,6 +104,7 @@ public MongoIterable<U> batchSize(final int batchSize) {
97104

98105
@Override
99106
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<U>> callback) {
107+
notNull("callback", callback);
100108
iterable.batchCursor(new SingleResultCallback<AsyncBatchCursor<T>>() {
101109
@Override
102110
public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) {

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

+5
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ private static AsyncOperationExecutor createOperationExecutor(final MongoClientS
9393
@Override
9494
public <T> void execute(final AsyncReadOperation<T> operation, final ReadPreference readPreference,
9595
final SingleResultCallback<T> callback) {
96+
notNull("operation", operation);
97+
notNull("readPreference", readPreference);
98+
notNull("callback", callback);
9699
final SingleResultCallback<T> wrappedCallback = errorHandlingCallback(callback);
97100
final AsyncReadBinding binding = getReadWriteBinding(readPreference, cluster);
98101
operation.executeAsync(binding, new SingleResultCallback<T>() {
@@ -109,6 +112,8 @@ public void onResult(final T result, final Throwable t) {
109112

110113
@Override
111114
public <T> void execute(final AsyncWriteOperation<T> operation, final SingleResultCallback<T> callback) {
115+
notNull("operation", operation);
116+
notNull("callback", callback);
112117
final AsyncWriteBinding binding = getReadWriteBinding(ReadPreference.primary(), cluster);
113118
operation.executeAsync(binding, new SingleResultCallback<T>() {
114119
@Override

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

+11-4
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,24 @@
2727
import java.util.Collection;
2828
import java.util.List;
2929

30-
class OperationIterable<T> implements MongoIterable<T> {
30+
import static org.bson.assertions.Assertions.notNull;
3131

32+
class OperationIterable<T> implements MongoIterable<T> {
3233
private final AsyncReadOperation<? extends AsyncBatchCursor<T>> operation;
3334
private final ReadPreference readPreference;
3435
private final AsyncOperationExecutor executor;
3536

3637
OperationIterable(final AsyncReadOperation<? extends AsyncBatchCursor<T>> operation, final ReadPreference readPreference,
3738
final AsyncOperationExecutor executor) {
38-
this.operation = operation;
39-
this.readPreference = readPreference;
40-
this.executor = executor;
39+
this.operation = notNull("operation", operation);
40+
this.readPreference = notNull("readPreference", readPreference);
41+
this.executor = notNull("executor", executor);
4142
}
4243

4344
@Override
4445
public void forEach(final Block<? super T> block, final SingleResultCallback<Void> callback) {
46+
notNull("block", block);
47+
notNull("callback", callback);
4548
batchCursor(new SingleResultCallback<AsyncBatchCursor<T>>() {
4649
@Override
4750
public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) {
@@ -56,6 +59,8 @@ public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) {
5659

5760
@Override
5861
public <A extends Collection<? super T>> void into(final A target, final SingleResultCallback<A> callback) {
62+
notNull("target", target);
63+
notNull("callback", callback);
5964
batchCursor(new SingleResultCallback<AsyncBatchCursor<T>>() {
6065
@Override
6166
public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) {
@@ -84,6 +89,7 @@ public void onResult(final Void result, final Throwable t) {
8489

8590
@Override
8691
public void first(final SingleResultCallback<T> callback) {
92+
notNull("callback", callback);
8793
batchCursor(new SingleResultCallback<AsyncBatchCursor<T>>() {
8894
@Override
8995
public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) {
@@ -122,6 +128,7 @@ public OperationIterable<T> batchSize(final int batchSize) {
122128
@SuppressWarnings("unchecked")
123129
@Override
124130
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<T>> callback) {
131+
notNull("callback", callback);
125132
executor.execute((AsyncReadOperation<AsyncBatchCursor<T>>) operation, readPreference, callback);
126133
}
127134

0 commit comments

Comments
 (0)