Skip to content

Commit ab2ff30

Browse files
committed
- adds missing defensive programming for nonnull annotations
1 parent 752e808 commit ab2ff30

39 files changed

+253
-126
lines changed

src/main/java/com/microsoft/graph/concurrency/ChunkedUploadProvider.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.io.InputStream;
3131
import java.security.InvalidParameterException;
3232
import java.util.List;
33+
import java.util.Objects;
3334
import java.util.concurrent.CompletableFuture;
3435
import java.util.concurrent.ExecutionException;
3536

@@ -103,25 +104,15 @@ public ChunkedUploadProvider(@Nonnull final IUploadSession uploadSession,
103104
@Nonnull final InputStream inputStream,
104105
final long streamSize,
105106
@Nonnull final Class<UploadType> uploadTypeClass) {
106-
if (uploadSession == null) {
107-
throw new InvalidParameterException("Upload session is null.");
108-
}
109-
110-
if (client == null) {
111-
throw new InvalidParameterException("OneDrive client is null.");
112-
}
113-
114-
if (inputStream == null) {
115-
throw new InvalidParameterException("Input stream is null.");
116-
}
107+
Objects.requireNonNull(uploadSession, "Upload session is null.");
117108

118109
if (streamSize <= 0) {
119110
throw new InvalidParameterException("Stream size should larger than 0.");
120111
}
121112

122-
this.client = client;
113+
this.client = Objects.requireNonNull(client, "Graph client is null.");
123114
this.readSoFar = 0;
124-
this.inputStream = inputStream;
115+
this.inputStream = Objects.requireNonNull(inputStream, "Input stream is null.");
125116
this.streamSize = streamSize;
126117
this.uploadUrl = uploadSession.getUploadUrl();
127118
this.responseHandler = new ChunkedUploadResponseHandler<UploadType>(uploadTypeClass, uploadSession.getClass());

src/main/java/com/microsoft/graph/concurrency/ChunkedUploadRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.List;
88
import java.util.Locale;
9+
import java.util.Objects;
910

1011
import javax.annotation.Nullable;
1112
import javax.annotation.Nonnull;
@@ -61,6 +62,9 @@ protected ChunkedUploadRequest(@Nonnull final String requestUrl,
6162
final int chunkSize,
6263
final long beginIndex,
6364
final long totalLength) {
65+
Objects.requireNonNull(requestUrl, "parameter requestUrl cannot be null");
66+
Objects.requireNonNull(client, "parameter client cannot be null");
67+
Objects.requireNonNull(chunk, "parameter chunk cannot be null");
6468
this.data = new byte[chunkSize];
6569
System.arraycopy(chunk, 0, this.data, 0, chunkSize);
6670
this.baseRequest = new BaseRequest<ChunkedUploadResult<UploadType>>(requestUrl, client, options, (Class<? extends ChunkedUploadResult<UploadType>>)(new ChunkedUploadResult<>((UploadType)null)).getClass()) {
@@ -84,6 +88,7 @@ protected ChunkedUploadRequest(@Nonnull final String requestUrl,
8488
@Nonnull
8589
public ChunkedUploadResult<UploadType> upload(
8690
@Nonnull final ChunkedUploadResponseHandler<UploadType> responseHandler) {
91+
Objects.requireNonNull(responseHandler, "parameter responseHandler cannot be null");
8792
ChunkedUploadResult<UploadType> result = null;
8893

8994
try {

src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResponseHandler.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.io.ByteArrayInputStream;
3636
import java.io.IOException;
3737
import java.io.InputStream;
38+
import java.util.Objects;
3839

3940
import javax.annotation.Nonnull;
4041
import javax.annotation.Nullable;
@@ -65,8 +66,8 @@ public class ChunkedUploadResponseHandler<UploadType>
6566
* @param uploadSessionType the type of the upload session
6667
*/
6768
protected ChunkedUploadResponseHandler(@Nonnull final Class<UploadType> uploadType, @Nonnull final Class<? extends IUploadSession> uploadSessionType) {
68-
this.deserializeTypeClass = uploadType;
69-
this.uploadSessionClass = uploadSessionType;
69+
this.deserializeTypeClass = Objects.requireNonNull(uploadType, "parameter uploadType cannot be null");
70+
this.uploadSessionClass = Objects.requireNonNull(uploadSessionType, "parameter uploadSessionType cannot be null");
7071
}
7172

7273
/**
@@ -96,6 +97,10 @@ public ChunkedUploadResult<UploadType> generateResult(
9697
@Nonnull final Response response,
9798
@Nonnull final ISerializer serializer,
9899
@Nonnull final ILogger logger) throws Exception {
100+
Objects.requireNonNull(request, "parameter request cannot be null");
101+
Objects.requireNonNull(response, "parameter response cannot be null");
102+
Objects.requireNonNull(serializer, "parameter serializer cannot be null");
103+
Objects.requireNonNull(logger, "parameter logger cannot be null");
99104
if (response.code() >= HttpResponseCode.HTTP_CLIENT_ERROR) {
100105
logger.logDebug("Receiving error during upload, see detail on result error");
101106

src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResult.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import com.microsoft.graph.http.GraphServiceException;
99

1010
import javax.annotation.Nullable;
11+
12+
import java.util.Objects;
13+
1114
import javax.annotation.Nonnull;
1215

1316
/**
@@ -68,7 +71,10 @@ protected ChunkedUploadResult(@Nullable final ClientException error) {
6871
* @param exception The exception received from server.
6972
*/
7073
protected ChunkedUploadResult(@Nonnull final GraphServiceException exception) {
71-
this(new ClientException(exception.getMessage(/* verbose */ true), exception));
74+
this(new ClientException(Objects
75+
.requireNonNull(exception, "parameter exception cannot be null")
76+
.getMessage(/* verbose */ true),
77+
exception));
7278
}
7379

7480
/**

src/main/java/com/microsoft/graph/content/BatchRequest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class BatchRequest extends BaseRequest<BatchResponseContent> {
4343
* @param client the client to use to execute the request
4444
* @param options the options to apply to the request
4545
*/
46-
public BatchRequest(@Nonnull final String requestUrl, @Nonnull final IBaseClient client, @Nonnull final List<? extends Option> options) {
46+
public BatchRequest(@Nonnull final String requestUrl, @Nonnull final IBaseClient<?> client, @Nonnull final List<? extends Option> options) {
4747
super(requestUrl, client, options, BatchResponseContent.class);
4848
}
4949

@@ -55,7 +55,7 @@ public BatchRequest(@Nonnull final String requestUrl, @Nonnull final IBaseClient
5555
* @throws ClientException an exception occurs if there was an error while the request was sent
5656
*/
5757
@Nullable
58-
public BatchResponseContent post(@Nonnull final BatchRequestContent content) throws ClientException {
58+
public BatchResponseContent post(@Nullable final BatchRequestContent content) throws ClientException {
5959
this.setHttpMethod(HttpMethod.POST);
6060
final BatchResponseContent response = this.getClient().getHttpProvider().send(this, BatchResponseContent.class, content);
6161
setSerializerOnSteps(response);
@@ -69,7 +69,7 @@ public BatchResponseContent post(@Nonnull final BatchRequestContent content) thr
6969
* @throws ClientException an exception occurs if there was an error while the request was sent
7070
*/
7171
@Nullable
72-
public java.util.concurrent.CompletableFuture<BatchResponseContent> postAsync(@Nonnull final BatchRequestContent content) throws ClientException {
72+
public java.util.concurrent.CompletableFuture<BatchResponseContent> postAsync(@Nullable final BatchRequestContent content) throws ClientException {
7373
this.setHttpMethod(HttpMethod.POST);
7474
return this.getClient().getHttpProvider().sendAsync(this, BatchResponseContent.class, content).thenApply(response -> {
7575
setSerializerOnSteps(response);

src/main/java/com/microsoft/graph/core/BaseClient.java

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public String getServiceRoot() {
7575

7676
@Override
7777
public void setServiceRoot(@Nonnull final String value) {
78-
endpoint = value;
78+
endpoint = Objects.requireNonNull(value, "value parameter cannot be null");
7979
}
8080

8181
/**
@@ -89,7 +89,9 @@ public void setServiceRoot(@Nonnull final String value) {
8989
*/
9090
@Nonnull
9191
public <T> CustomRequestBuilder<T> customRequest(@Nonnull final String url, @Nonnull final Class<T> responseType) {
92-
return new CustomRequestBuilder<>(getServiceRoot() + url, this, null, responseType);
92+
Objects.requireNonNull(url, "url parameter cannot be null");
93+
Objects.requireNonNull(responseType, "responseType parameter cannot be null");
94+
return new CustomRequestBuilder<>(getServiceRoot() + url, this, null, responseType);
9395
}
9496

9597
/**
@@ -101,8 +103,7 @@ public <T> CustomRequestBuilder<T> customRequest(@Nonnull final String url, @Non
101103
*/
102104
@Nonnull
103105
public CustomRequestBuilder<JsonElement> customRequest(@Nonnull final String url) {
104-
return new CustomRequestBuilder<>(getServiceRoot() + url, this, null,
105-
JsonElement.class);
106+
return this.customRequest(url, JsonElement.class);
106107
}
107108

108109
/**
@@ -197,7 +198,7 @@ private IHttpProvider<nativeRequestType> getHttpProvider() {
197198
*/
198199
@Nonnull
199200
public Builder<httpClientType, nativeRequestType> serializer(@Nonnull final ISerializer serializer) {
200-
checkNotNull(serializer, "serializer");
201+
Objects.requireNonNull(serializer, "parameter serializer cannot be null");
201202
this.serializer = serializer;
202203
return this;
203204
}
@@ -211,7 +212,7 @@ public Builder<httpClientType, nativeRequestType> serializer(@Nonnull final ISer
211212
*/
212213
@Nonnull
213214
public Builder<httpClientType, nativeRequestType> httpProvider(@Nonnull final IHttpProvider<nativeRequestType> httpProvider) {
214-
checkNotNull(httpProvider, "httpProvider");
215+
Objects.requireNonNull(httpProvider, "parameter httpProvider cannot be null");
215216
this.httpProvider = httpProvider;
216217
return this;
217218
}
@@ -225,7 +226,7 @@ public Builder<httpClientType, nativeRequestType> httpProvider(@Nonnull final IH
225226
*/
226227
@Nonnull
227228
public Builder<httpClientType, nativeRequestType> logger(@Nonnull final ILogger logger) {
228-
checkNotNull(logger, "logger");
229+
Objects.requireNonNull(logger, "parameter logger cannot be null");
229230
this.logger = logger;
230231
return this;
231232
}
@@ -239,7 +240,7 @@ public Builder<httpClientType, nativeRequestType> logger(@Nonnull final ILogger
239240
*/
240241
@Nonnull
241242
public Builder<httpClientType, nativeRequestType> httpClient(@Nonnull final httpClientType client) {
242-
checkNotNull(client, "client");
243+
Objects.requireNonNull(client, "parameter client cannot be null");
243244
this.httpClient = client;
244245
return this;
245246
}
@@ -252,7 +253,7 @@ public Builder<httpClientType, nativeRequestType> httpClient(@Nonnull final http
252253
*/
253254
@Nonnull
254255
public Builder<httpClientType, nativeRequestType> authenticationProvider(@Nonnull final IAuthenticationProvider auth) {
255-
checkNotNull(auth, "auth");
256+
Objects.requireNonNull(auth, "parameter auth cannot be null");
256257
this.auth = auth;
257258
return this;
258259
}
@@ -288,18 +289,6 @@ public IBaseClient<nativeRequestType> buildClient() throws ClientException {
288289
}
289290
}
290291

291-
/**
292-
* Checks whether the provided object is null or not and throws an exception if it is
293-
*
294-
* @param o object to check
295-
* @param name name to use in the exception message
296-
*/
297-
protected static void checkNotNull(@Nullable final Object o, @Nonnull final String name) {
298-
if (o==null) {
299-
throw new NullPointerException(name + " cannot be null");
300-
}
301-
}
302-
303292
/**
304293
* The HTTP provider instance
305294
*/
@@ -353,7 +342,7 @@ public ISerializer getSerializer() {
353342
* @param logger The logger
354343
*/
355344
protected void setLogger(@Nonnull final ILogger logger) {
356-
checkNotNull(logger, "logger");
345+
Objects.requireNonNull(logger, "parameter logger cannot be null");
357346
this.logger = logger;
358347
}
359348

@@ -363,7 +352,7 @@ protected void setLogger(@Nonnull final ILogger logger) {
363352
* @param httpProvider The HTTP provider
364353
*/
365354
protected void setHttpProvider(@Nonnull final IHttpProvider<nativeRequestType> httpProvider) {
366-
checkNotNull(httpProvider, "httpProvider");
355+
Objects.requireNonNull(httpProvider, "parameter httpProvider cannot be null");
367356
this.httpProvider = httpProvider;
368357
}
369358

@@ -373,7 +362,7 @@ protected void setHttpProvider(@Nonnull final IHttpProvider<nativeRequestType> h
373362
* @param serializer The serializer
374363
*/
375364
public void setSerializer(@Nonnull final ISerializer serializer) {
376-
checkNotNull(serializer, "serializer");
365+
Objects.requireNonNull(serializer, "parameter serializer cannot be null");
377366
this.serializer = serializer;
378367
}
379368

src/main/java/com/microsoft/graph/core/CustomRequestBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.microsoft.graph.core;
22

33
import java.util.List;
4+
import java.util.Objects;
45

56
import javax.annotation.Nullable;
67
import javax.annotation.Nonnull;
@@ -28,7 +29,7 @@ public class CustomRequestBuilder<T> extends BaseRequestBuilder<T> {
2829
*/
2930
public CustomRequestBuilder(@Nonnull final String requestUrl, @Nonnull final IBaseClient<?> client, @Nullable final List<? extends Option> requestOptions, @Nonnull final Class<T> responseType) {
3031
super(requestUrl, client, requestOptions);
31-
this.responseType = responseType;
32+
this.responseType = Objects.requireNonNull(responseType, "parameter responseType cannot be null");
3233
}
3334

3435
/**

src/main/java/com/microsoft/graph/core/DateOnly.java

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

44
import java.text.ParseException;
55
import java.util.Locale;
6+
import java.util.Objects;
67

78
import javax.annotation.Nullable;
89
import javax.annotation.Nonnull;
@@ -36,6 +37,7 @@ public class DateOnly {
3637
*/
3738
@Nullable
3839
public static DateOnly parse(@Nonnull final String dateStr) throws ParseException {
40+
Objects.requireNonNull(dateStr, "parameter dateStr cannot be null");
3941
// break the date up into its constituent parts
4042
final String[] dateInfo = dateStr.split("-");
4143

src/main/java/com/microsoft/graph/core/Multipart.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.math.BigInteger;
88
import java.security.SecureRandom;
99
import java.util.Map;
10+
import java.util.Objects;
1011

1112
import javax.annotation.Nullable;
1213
import javax.annotation.Nonnull;
@@ -51,7 +52,7 @@ public String getBoundary() {
5152
* @param boundary The multipart boundary
5253
*/
5354
public void setBoundary(@Nonnull final String boundary) {
54-
this.boundary = boundary;
55+
this.boundary = Objects.requireNonNull(boundary, "parameter boundary cannot be null");
5556
}
5657

5758
/**
@@ -68,7 +69,7 @@ public String getContentType() {
6869
* @param contentType The multipart Content-Type
6970
*/
7071
public void setContentType(@Nonnull final String contentType) {
71-
this.contentType = contentType;
72+
this.contentType = Objects.requireNonNull(contentType, "parameter contentType cannot be null");
7273
}
7374

7475
/**

src/main/java/com/microsoft/graph/core/TimeOfDay.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.math.BigDecimal;
88
import java.text.ParseException;
99
import java.util.Locale;
10+
import java.util.Objects;
1011

1112
/**
1213
* The time of day
@@ -37,6 +38,7 @@ public class TimeOfDay {
3738
*/
3839
@Nullable
3940
public static TimeOfDay parse(@Nonnull final String timeStr) throws ParseException {
41+
Objects.requireNonNull(timeStr, "parameter timeStr cannot be null");
4042
// break the date up into its constituent parts
4143
final String[] timeInfo = timeStr.split(":");
4244

0 commit comments

Comments
 (0)