Skip to content

Commit e408ea0

Browse files
committed
- lints httpcore package
1 parent 99ca9e6 commit e408ea0

File tree

5 files changed

+60
-43
lines changed

5 files changed

+60
-43
lines changed

src/main/java/com/microsoft/graph/httpcore/AuthenticationHandler.java

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

77
import com.microsoft.graph.authentication.IAuthenticationProvider;
88

9-
import javax.annotation.Nullable;
109
import javax.annotation.Nonnull;
1110

1211
import com.microsoft.graph.httpcore.middlewareoption.MiddlewareType;
@@ -40,18 +39,19 @@ public AuthenticationHandler(@Nonnull final IAuthenticationProvider authProvider
4039
}
4140

4241
@Override
43-
@Nullable
42+
@Nonnull
4443
public Response intercept(@Nonnull final Chain chain) throws IOException {
4544
Request originalRequest = chain.request();
4645

47-
if(originalRequest.tag(TelemetryOptions.class) == null)
48-
originalRequest = originalRequest.newBuilder().tag(TelemetryOptions.class, new TelemetryOptions()).build();
49-
originalRequest.tag(TelemetryOptions.class).setFeatureUsage(TelemetryOptions.AUTH_HANDLER_ENABLED_FLAG);
46+
TelemetryOptions telemetryOptions = originalRequest.tag(TelemetryOptions.class);
47+
if(telemetryOptions == null) {
48+
telemetryOptions = new TelemetryOptions();
49+
originalRequest = originalRequest.newBuilder().tag(TelemetryOptions.class, telemetryOptions).build();
50+
}
51+
telemetryOptions.setFeatureUsage(TelemetryOptions.AUTH_HANDLER_ENABLED_FLAG);
5052

5153
try {
5254
final CompletableFuture<String> future = authProvider.getAuthorizationTokenAsync(originalRequest.url().url());
53-
if(future == null)
54-
return chain.proceed(originalRequest);
5555
final String accessToken = future.get();
5656
if(accessToken == null)
5757
return chain.proceed(originalRequest);

src/main/java/com/microsoft/graph/httpcore/ChaosHttpHandler.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,32 +28,35 @@ public class ChaosHttpHandler implements Interceptor {
2828
/**
2929
* constant string being used
3030
*/
31-
private final String RETRY_AFTER = "Retry-After";
31+
private static final String RETRY_AFTER = "Retry-After";
3232
/**
3333
* Denominator for the failure rate (i.e. 1/X)
3434
*/
35-
private final int failureRate = 3;
35+
private static final int failureRate = 3;
3636
/**
3737
* default value to return on retry after
3838
*/
39-
private final String retryAfterValue = "10";
39+
private static final String retryAfterValue = "10";
4040
/**
4141
* body to respond on failed requests
4242
*/
43-
private final String responseBody = "{\"error\": {\"code\": \"TooManyRequests\",\"innerError\": {\"code\": \"429\",\"date\": \"2020-08-18T12:51:51\",\"message\": \"Please retry after\",\"request-id\": \"94fb3b52-452a-4535-a601-69e0a90e3aa2\",\"status\": \"429\"},\"message\": \"Please retry again later.\"}}";
43+
private static final String responseBody = "{\"error\": {\"code\": \"TooManyRequests\",\"innerError\": {\"code\": \"429\",\"date\": \"2020-08-18T12:51:51\",\"message\": \"Please retry after\",\"request-id\": \"94fb3b52-452a-4535-a601-69e0a90e3aa2\",\"status\": \"429\"},\"message\": \"Please retry again later.\"}}";
4444
/**
4545
* Too many requests status code
4646
*/
4747
public static final int MSClientErrorCodeTooManyRequests = 429;
4848

4949
@Override
50-
@Nullable
50+
@Nonnull
5151
public Response intercept(@Nonnull final Chain chain) throws IOException {
5252
Request request = chain.request();
5353

54-
if(request.tag(TelemetryOptions.class) == null)
55-
request = request.newBuilder().tag(TelemetryOptions.class, new TelemetryOptions()).build();
56-
request.tag(TelemetryOptions.class).setFeatureUsage(TelemetryOptions.RETRY_HANDLER_ENABLED_FLAG);
54+
TelemetryOptions telemetryOptions = request.tag(TelemetryOptions.class);
55+
if(telemetryOptions == null) {
56+
telemetryOptions = new TelemetryOptions();
57+
request = request.newBuilder().tag(TelemetryOptions.class, telemetryOptions).build();
58+
}
59+
telemetryOptions.setFeatureUsage(TelemetryOptions.RETRY_HANDLER_ENABLED_FLAG);
5760

5861
final int dice = ThreadLocalRandom.current().nextInt(1, Integer.MAX_VALUE);
5962

src/main/java/com/microsoft/graph/httpcore/RedirectHandler.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,16 @@ Request getRedirect(
115115

116116
// Intercept request and response made to network
117117
@Override
118-
@Nullable
118+
@Nonnull
119119
public Response intercept(@Nonnull final Chain chain) throws IOException {
120120
Request request = chain.request();
121121

122-
if(request.tag(TelemetryOptions.class) == null)
123-
request = request.newBuilder().tag(TelemetryOptions.class, new TelemetryOptions()).build();
124-
request.tag(TelemetryOptions.class).setFeatureUsage(TelemetryOptions.REDIRECT_HANDLER_ENABLED_FLAG);
122+
TelemetryOptions telemetryOptions = request.tag(TelemetryOptions.class);
123+
if(telemetryOptions == null) {
124+
telemetryOptions = new TelemetryOptions();
125+
request = request.newBuilder().tag(TelemetryOptions.class, telemetryOptions).build();
126+
}
127+
telemetryOptions.setFeatureUsage(TelemetryOptions.REDIRECT_HANDLER_ENABLED_FLAG);
125128

126129
Response response = null;
127130
int requestsCount = 1;

src/main/java/com/microsoft/graph/httpcore/RetryHandler.java

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import okhttp3.Interceptor;
1717
import okhttp3.Request;
1818
import okhttp3.Response;
19+
import okhttp3.ResponseBody;
1920

2021
/**
2122
* The middleware responsible for retrying requests when they fail because of transient issues
@@ -32,27 +33,27 @@ public class RetryHandler implements Interceptor{
3233
/**
3334
* Header name to track the retry attempt number
3435
*/
35-
private final String RETRY_ATTEMPT_HEADER = "Retry-Attempt";
36+
private static final String RETRY_ATTEMPT_HEADER = "Retry-Attempt";
3637
/**
3738
* Header name for the retry after information
3839
*/
39-
private final String RETRY_AFTER = "Retry-After";
40+
private static final String RETRY_AFTER = "Retry-After";
4041
/**
4142
* Header name for the transfer information
4243
*/
43-
private final String TRANSFER_ENCODING = "Transfer-Encoding";
44+
private static final String TRANSFER_ENCODING = "Transfer-Encoding";
4445
/**
4546
* Chunked encoding header value
4647
*/
47-
private final String TRANSFER_ENCODING_CHUNKED = "chunked";
48+
private static final String TRANSFER_ENCODING_CHUNKED = "chunked";
4849
/**
4950
* Binary content type header value
5051
*/
51-
private final String APPLICATION_OCTET_STREAM = "application/octet-stream";
52+
private static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
5253
/**
5354
* Header name for the content type
5455
*/
55-
private final String CONTENT_TYPE = "Content-Type";
56+
private static final String CONTENT_TYPE = "Content-Type";
5657

5758
/**
5859
* Too many requests status code
@@ -70,7 +71,7 @@ public class RetryHandler implements Interceptor{
7071
/**
7172
* One second as milliseconds
7273
*/
73-
private final long DELAY_MILLISECONDS = 1000;
74+
private static final long DELAY_MILLISECONDS = 1000;
7475

7576
private final ILogger logger;
7677

@@ -114,7 +115,8 @@ boolean retryRequest(Response response, int executionCount, Request request, Ret
114115
// Payloads with forward only streams will be have the responses returned
115116
// without any retry attempt.
116117
shouldRetry =
117-
(executionCount <= retryOptions.maxRetries())
118+
retryOptions != null
119+
&& executionCount <= retryOptions.maxRetries()
118120
&& checkStatus(statusCode) && isBuffered(response, request)
119121
&& shouldRetryCallback != null
120122
&& shouldRetryCallback.shouldRetry(retryOptions.delay(), executionCount, request, response);
@@ -155,7 +157,7 @@ boolean checkStatus(int statusCode) {
155157
|| statusCode == MSClientErrorCodeGatewayTimeout);
156158
}
157159

158-
boolean isBuffered(Response response, Request request) {
160+
boolean isBuffered(final Response response, final Request request) {
159161
String methodName = request.method();
160162
if(methodName.equalsIgnoreCase("GET") || methodName.equalsIgnoreCase("DELETE") || methodName.equalsIgnoreCase("HEAD") || methodName.equalsIgnoreCase("OPTIONS"))
161163
return true;
@@ -164,11 +166,12 @@ boolean isBuffered(Response response, Request request) {
164166
methodName.equalsIgnoreCase("PUT") ||
165167
methodName.equalsIgnoreCase("PATCH");
166168

167-
if(isHTTPMethodPutPatchOrPost) {
168-
boolean isStream = response.header(CONTENT_TYPE)!=null && response.header(CONTENT_TYPE).equalsIgnoreCase(APPLICATION_OCTET_STREAM);
169+
if(isHTTPMethodPutPatchOrPost && response != null) {
170+
final String contentTypeHeaderValue = response.header(CONTENT_TYPE);
171+
final boolean isStream = contentTypeHeaderValue!=null && contentTypeHeaderValue.equalsIgnoreCase(APPLICATION_OCTET_STREAM);
169172
if(!isStream) {
170-
String transferEncoding = response.header(TRANSFER_ENCODING);
171-
boolean isTransferEncodingChunked = (transferEncoding != null) &&
173+
final String transferEncoding = response.header(TRANSFER_ENCODING);
174+
final boolean isTransferEncodingChunked = (transferEncoding != null) &&
172175
transferEncoding.equalsIgnoreCase(TRANSFER_ENCODING_CHUNKED);
173176

174177
if(request.body() != null && isTransferEncodingChunked)
@@ -179,13 +182,16 @@ boolean isBuffered(Response response, Request request) {
179182
}
180183

181184
@Override
182-
@Nullable
185+
@Nonnull
183186
public Response intercept(@Nonnull final Chain chain) throws IOException {
184187
Request request = chain.request();
185188

186-
if(request.tag(TelemetryOptions.class) == null)
187-
request = request.newBuilder().tag(TelemetryOptions.class, new TelemetryOptions()).build();
188-
request.tag(TelemetryOptions.class).setFeatureUsage(TelemetryOptions.RETRY_HANDLER_ENABLED_FLAG);
189+
TelemetryOptions telemetryOptions = request.tag(TelemetryOptions.class);
190+
if(telemetryOptions == null) {
191+
telemetryOptions = new TelemetryOptions();
192+
request = request.newBuilder().tag(TelemetryOptions.class, telemetryOptions).build();
193+
}
194+
telemetryOptions.setFeatureUsage(TelemetryOptions.RETRY_HANDLER_ENABLED_FLAG);
189195

190196
Response response = chain.proceed(request);
191197

@@ -198,8 +204,9 @@ public Response intercept(@Nonnull final Chain chain) throws IOException {
198204
request = request.newBuilder().addHeader(RETRY_ATTEMPT_HEADER, String.valueOf(executionCount)).build();
199205
executionCount++;
200206
if(response != null) {
201-
if(response.body() != null)
202-
response.body().close();
207+
final ResponseBody body = response.body();
208+
if(body != null)
209+
body.close();
203210
response.close();
204211
}
205212
response = chain.proceed(request);

src/main/java/com/microsoft/graph/httpcore/TelemetryHandler.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class TelemetryHandler implements Interceptor{
4545
private static final String DEFAULT_VERSION_VALUE = "0";
4646

4747
@Override
48-
@Nullable
48+
@Nonnull
4949
public Response intercept(@Nonnull final Chain chain) throws IOException {
5050
final Request request = chain.request();
5151
final Request.Builder telemetryAddedBuilder = request.newBuilder();
@@ -87,10 +87,14 @@ private String getAndroidAPILevelInternal() {
8787
break;
8888
}
8989
}
90-
final Field sdkVersionField = versionClass.getField("SDK_INT");
91-
final Object value = sdkVersionField.get(null);
92-
final String valueStr = String.valueOf(value);
93-
return valueStr == null || valueStr == "" ? DEFAULT_VERSION_VALUE : valueStr;
90+
if(versionClass == null)
91+
return DEFAULT_VERSION_VALUE;
92+
else {
93+
final Field sdkVersionField = versionClass.getField("SDK_INT");
94+
final Object value = sdkVersionField.get(null);
95+
final String valueStr = String.valueOf(value);
96+
return valueStr == null || valueStr.equals("") ? DEFAULT_VERSION_VALUE : valueStr;
97+
}
9498
} catch (IllegalAccessException | ClassNotFoundException | NoSuchFieldException ex) {
9599
// we're not on android and return "0" to align with java version which returns "0" when running on android
96100
return DEFAULT_VERSION_VALUE;

0 commit comments

Comments
 (0)