Skip to content

Commit 8af5e7f

Browse files
committed
Added notNull checks
To AsyncOperationExecutor and MongoIterables JAVA-2031
1 parent ad54aff commit 8af5e7f

19 files changed

+456
-7
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,21 @@ public void toCollection(final SingleResultCallback<Void> callback) {
112112

113113
@Override
114114
public void first(final SingleResultCallback<TResult> callback) {
115+
notNull("callback", callback);
115116
execute().first(callback);
116117
}
117118

118119
@Override
119120
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
121+
notNull("block", block);
122+
notNull("callback", callback);
120123
execute().forEach(block, callback);
121124
}
122125

123126
@Override
124127
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
128+
notNull("target", target);
129+
notNull("callback", callback);
125130
execute().into(target, callback);
126131
}
127132

@@ -132,6 +137,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
132137

133138
@Override
134139
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
140+
notNull("callback", callback);
135141
execute().batchCursor(callback);
136142
}
137143

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

Lines changed: 8 additions & 0 deletions
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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,21 @@ public DistinctIterable<TResult> batchSize(final int batchSize) {
8282

8383
@Override
8484
public void first(final SingleResultCallback<TResult> callback) {
85+
notNull("callback", callback);
8586
execute().first(callback);
8687
}
8788

8889
@Override
8990
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
91+
notNull("block", block);
92+
notNull("callback", callback);
9093
execute().forEach(block, callback);
9194
}
9295

9396
@Override
9497
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
98+
notNull("target", target);
99+
notNull("callback", callback);
95100
execute().into(target, callback);
96101
}
97102

@@ -102,6 +107,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
102107

103108
@Override
104109
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
110+
notNull("callback", callback);
105111
execute().batchCursor(callback);
106112
}
107113

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,21 @@ public FindIterable<TResult> cursorType(final CursorType cursorType) {
144144

145145
@Override
146146
public void first(final SingleResultCallback<TResult> callback) {
147+
notNull("callback", callback);
147148
execute(createQueryOperation().batchSize(0).limit(-1)).first(callback);
148149
}
149150

150151
@Override
151152
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
153+
notNull("block", block);
154+
notNull("callback", callback);
152155
execute().forEach(block, callback);
153156
}
154157

155158
@Override
156159
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
160+
notNull("target", target);
161+
notNull("callback", callback);
157162
execute().into(target, callback);
158163
}
159164

@@ -164,6 +169,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
164169

165170
@Override
166171
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
172+
notNull("callback", callback);
167173
execute().batchCursor(callback);
168174
}
169175

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

Lines changed: 6 additions & 0 deletions
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

Lines changed: 6 additions & 0 deletions
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

Lines changed: 6 additions & 0 deletions
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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ public MapReduceIterable<TResult> batchSize(final int batchSize) {
170170

171171
@Override
172172
public void toCollection(final SingleResultCallback<Void> callback) {
173+
notNull("callback", callback);
173174
if (inline) {
174175
throw new IllegalArgumentException("The options must specify a non-inline result");
175176
}
@@ -184,16 +185,21 @@ public void onResult(final MapReduceStatistics result, final Throwable t) {
184185

185186
@Override
186187
public void first(final SingleResultCallback<TResult> callback) {
188+
notNull("callback", callback);
187189
execute().first(callback);
188190
}
189191

190192
@Override
191193
public void forEach(final Block<? super TResult> block, final SingleResultCallback<Void> callback) {
194+
notNull("block", block);
195+
notNull("callback", callback);
192196
execute().forEach(block, callback);
193197
}
194198

195199
@Override
196200
public <A extends Collection<? super TResult>> void into(final A target, final SingleResultCallback<A> callback) {
201+
notNull("target", target);
202+
notNull("callback", callback);
197203
execute().into(target, callback);
198204
}
199205

@@ -204,6 +210,7 @@ public <U> MongoIterable<U> map(final Function<TResult, U> mapper) {
204210

205211
@Override
206212
public void batchCursor(final SingleResultCallback<AsyncBatchCursor<TResult>> callback) {
213+
notNull("callback", callback);
207214
execute().batchCursor(callback);
208215
}
209216

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

Lines changed: 10 additions & 2 deletions
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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ private static AsyncOperationExecutor createOperationExecutor(final MongoClientS
9494
@Override
9595
public <T> void execute(final AsyncReadOperation<T> operation, final ReadPreference readPreference,
9696
final SingleResultCallback<T> callback) {
97+
notNull("operation", operation);
98+
notNull("readPreference", readPreference);
99+
notNull("callback", callback);
97100
final SingleResultCallback<T> wrappedCallback = errorHandlingCallback(callback);
98101
final AsyncReadBinding binding = getReadWriteBinding(readPreference, cluster);
99102
operation.executeAsync(binding, new SingleResultCallback<T>() {
@@ -110,6 +113,8 @@ public void onResult(final T result, final Throwable t) {
110113

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

0 commit comments

Comments
 (0)