Skip to content

Commit 6644d50

Browse files
committed
Don't nest try/catch + add some comments about why no throw errors.
1 parent 0e1631a commit 6644d50

File tree

1 file changed

+50
-36
lines changed
  • oauth2_http/java/com/google/auth/oauth2

1 file changed

+50
-36
lines changed

oauth2_http/java/com/google/auth/oauth2/S2A.java

Lines changed: 50 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -130,62 +130,76 @@ public S2A build() {
130130
* @return the {@link S2AConfig}.
131131
*/
132132
private S2AConfig getS2AConfigFromMDS() {
133-
GenericUrl genericUrl = new GenericUrl(MDS_MTLS_ENDPOINT);
134-
JsonObjectParser parser = new JsonObjectParser(OAuth2Utils.JSON_FACTORY);
135133
if (transportFactory == null) {
136134
transportFactory =
137135
Iterables.getFirst(
138136
ServiceLoader.load(HttpTransportFactory.class), OAuth2Utils.HTTP_TRANSPORT_FACTORY);
139137
}
140138

141-
String plaintextS2AAddress = "";
142-
String mtlsS2AAddress = "";
139+
HttpRequest request = null;
140+
GenericUrl genericUrl = new GenericUrl(MDS_MTLS_ENDPOINT);
143141
try {
144-
HttpRequest request =
145-
transportFactory.create().createRequestFactory().buildGetRequest(genericUrl);
146-
request.setParser(parser);
147-
request.getHeaders().set(METADATA_FLAVOR, GOOGLE);
148-
request.setThrowExceptionOnExecuteError(false);
149-
request.setNumberOfRetries(OAuth2Utils.DEFAULT_NUMBER_OF_RETRIES);
150-
151-
ExponentialBackOff backoff =
152-
new ExponentialBackOff.Builder()
153-
.setInitialIntervalMillis(OAuth2Utils.INITIAL_RETRY_INTERVAL_MILLIS)
154-
.setRandomizationFactor(OAuth2Utils.RETRY_RANDOMIZATION_FACTOR)
155-
.setMultiplier(OAuth2Utils.RETRY_MULTIPLIER)
156-
.build();
157-
158-
// Retry on 5xx status codes.
159-
request.setUnsuccessfulResponseHandler(
160-
new HttpBackOffUnsuccessfulResponseHandler(backoff)
161-
.setBackOffRequired(
162-
response -> RETRYABLE_STATUS_CODES.contains(response.getStatusCode())));
163-
request.setIOExceptionHandler(new HttpBackOffIOExceptionHandler(backoff));
142+
request = transportFactory.create().createRequestFactory().buildGetRequest(genericUrl);
143+
} catch (IOException ignore) {
144+
/*
145+
* Return empty addresses in {@link S2AConfig} if error building the GET request.
146+
*/
147+
return S2AConfig.createBuilder().build();
148+
}
164149

150+
request.setParser(new JsonObjectParser(OAuth2Utils.JSON_FACTORY));
151+
request.getHeaders().set(METADATA_FLAVOR, GOOGLE);
152+
request.setThrowExceptionOnExecuteError(false);
153+
request.setNumberOfRetries(OAuth2Utils.DEFAULT_NUMBER_OF_RETRIES);
154+
155+
ExponentialBackOff backoff =
156+
new ExponentialBackOff.Builder()
157+
.setInitialIntervalMillis(OAuth2Utils.INITIAL_RETRY_INTERVAL_MILLIS)
158+
.setRandomizationFactor(OAuth2Utils.RETRY_RANDOMIZATION_FACTOR)
159+
.setMultiplier(OAuth2Utils.RETRY_MULTIPLIER)
160+
.build();
161+
162+
// Retry on 5xx status codes.
163+
request.setUnsuccessfulResponseHandler(
164+
new HttpBackOffUnsuccessfulResponseHandler(backoff)
165+
.setBackOffRequired(
166+
response -> RETRYABLE_STATUS_CODES.contains(response.getStatusCode())));
167+
request.setIOExceptionHandler(new HttpBackOffIOExceptionHandler(backoff));
168+
169+
GenericData responseData = null;
170+
try {
165171
HttpResponse response = request.execute();
166172
InputStream content = response.getContent();
167173
if (content == null) {
168174
return S2AConfig.createBuilder().build();
169175
}
170-
GenericData responseData = response.parseAs(GenericData.class);
171-
try {
172-
plaintextS2AAddress =
173-
OAuth2Utils.validateString(
174-
responseData, S2A_PLAINTEXT_ADDRESS_JSON_KEY, PARSE_ERROR_S2A);
175-
} catch (IOException ignore) {
176-
}
177-
try {
178-
mtlsS2AAddress =
179-
OAuth2Utils.validateString(responseData, S2A_MTLS_ADDRESS_JSON_KEY, PARSE_ERROR_S2A);
180-
} catch (IOException ignore) {
181-
}
176+
responseData = response.parseAs(GenericData.class);
182177
} catch (IOException ignore) {
183178
/*
184179
* Return empty addresses in {@link S2AConfig} once all retries have been exhausted.
185180
*/
186181
return S2AConfig.createBuilder().build();
187182
}
188183

184+
String plaintextS2AAddress = "";
185+
String mtlsS2AAddress = "";
186+
try {
187+
plaintextS2AAddress =
188+
OAuth2Utils.validateString(responseData, S2A_PLAINTEXT_ADDRESS_JSON_KEY, PARSE_ERROR_S2A);
189+
} catch (IOException ignore) {
190+
/*
191+
* Do not throw error because of parsing error, just leave the address as empty in {@link S2AConfig}.
192+
*/
193+
}
194+
try {
195+
mtlsS2AAddress =
196+
OAuth2Utils.validateString(responseData, S2A_MTLS_ADDRESS_JSON_KEY, PARSE_ERROR_S2A);
197+
} catch (IOException ignore) {
198+
/*
199+
* Do not throw error because of parsing error, just leave the address as empty in {@link S2AConfig}.
200+
*/
201+
}
202+
189203
return S2AConfig.createBuilder()
190204
.setPlaintextAddress(plaintextS2AAddress)
191205
.setMtlsAddress(mtlsS2AAddress)

0 commit comments

Comments
 (0)