Skip to content

Commit 336f554

Browse files
authored
Fix client options flow to Http line in SDKs. (Azure#36382)
1 parent 5d56b96 commit 336f554

File tree

13 files changed

+120
-96
lines changed

13 files changed

+120
-96
lines changed

sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ public final class ConfigurationClientBuilder implements
118118
private static final String CLIENT_NAME;
119119
private static final String CLIENT_VERSION;
120120
private static final HttpPipelinePolicy ADD_HEADERS_POLICY;
121+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
121122

122123
static {
123124
Map<String, String> properties = CoreUtils.getProperties("azure-data-appconfiguration.properties");
@@ -255,10 +256,11 @@ private HttpPipeline createDefaultHttpPipeline(SyncTokenPolicy syncTokenPolicy,
255256
// endpoint cannot be null, which is required in request authentication
256257
Objects.requireNonNull(buildEndpoint, "'Endpoint' is required and can not be null.");
257258

259+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
258260
// Closest to API goes first, closest to wire goes last.
259261
final List<HttpPipelinePolicy> policies = new ArrayList<>();
260262
policies.add(new UserAgentPolicy(
261-
getApplicationId(clientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
263+
getApplicationId(localClientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
262264
policies.add(new RequestIdPolicy());
263265
policies.add(new AddHeadersFromContextPolicy());
264266
policies.add(ADD_HEADERS_POLICY);
@@ -286,12 +288,11 @@ private HttpPipeline createDefaultHttpPipeline(SyncTokenPolicy syncTokenPolicy,
286288
policies.add(syncTokenPolicy);
287289
policies.addAll(perRetryPolicies);
288290

289-
if (clientOptions != null) {
290-
List<HttpHeader> httpHeaderList = new ArrayList<>();
291-
clientOptions.getHeaders().forEach(
292-
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
293-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
294-
}
291+
List<HttpHeader> httpHeaderList = new ArrayList<>();
292+
localClientOptions.getHeaders().forEach(
293+
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
294+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
295+
295296

296297
HttpPolicyProviders.addAfterRetryPolicies(policies);
297298
policies.add(new HttpLoggingPolicy(httpLogOptions));
@@ -301,6 +302,7 @@ private HttpPipeline createDefaultHttpPipeline(SyncTokenPolicy syncTokenPolicy,
301302
.policies(policies.toArray(new HttpPipelinePolicy[0]))
302303
.httpClient(httpClient)
303304
.tracer(createTracer(clientOptions))
305+
.clientOptions(localClientOptions)
304306
.build();
305307
}
306308

sdk/attestation/azure-security-attestation/src/main/java/com/azure/security/attestation/AttestationAdministrationClientBuilder.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public final class AttestationAdministrationClientBuilder implements
131131
private static final String SDK_NAME = "name";
132132
private static final String SDK_VERSION = "version";
133133
private static final RetryPolicy DEFAULT_RETRY_POLICY = new RetryPolicy("retry-after-ms", ChronoUnit.MILLIS);
134+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
134135

135136
private final String[] dataplaneScope = new String[] {"https://attest.azure.net/.default"};
136137

@@ -470,10 +471,12 @@ private AttestationClientImpl buildInnerClient() {
470471

471472
HttpPipeline pipeline = this.pipeline;
472473
if (pipeline == null) {
474+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
475+
473476
// Closest to API goes first, closest to wire goes last.
474477
final List<HttpPipelinePolicy> policies = new ArrayList<>();
475478
policies.add(new UserAgentPolicy(
476-
getApplicationId(clientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
479+
getApplicationId(localClientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
477480
policies.add(new RequestIdPolicy());
478481
policies.add(new AddHeadersFromContextPolicy());
479482

@@ -491,12 +494,10 @@ private AttestationClientImpl buildInnerClient() {
491494
}
492495
policies.addAll(perRetryPolicies);
493496

494-
if (clientOptions != null) {
495-
List<HttpHeader> httpHeaderList = new ArrayList<>();
496-
clientOptions.getHeaders().forEach(
497-
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
498-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
499-
}
497+
List<HttpHeader> httpHeaderList = new ArrayList<>();
498+
localClientOptions.getHeaders().forEach(
499+
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
500+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
500501

501502
HttpPolicyProviders.addAfterRetryPolicies(policies);
502503
policies.add(new HttpLoggingPolicy(httpLogOptions));
@@ -505,6 +506,7 @@ private AttestationClientImpl buildInnerClient() {
505506
pipeline = new HttpPipelineBuilder()
506507
.policies(policies.toArray(new HttpPipelinePolicy[0]))
507508
.httpClient(httpClient)
509+
.clientOptions(localClientOptions)
508510
.build();
509511
}
510512

sdk/attestation/azure-security-attestation/src/main/java/com/azure/security/attestation/AttestationClientBuilder.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public final class AttestationClientBuilder implements
9696

9797
private static final String SDK_VERSION = "version";
9898
private static final RetryPolicy DEFAULT_RETRY_POLICY = new RetryPolicy("retry-after-ms", ChronoUnit.MILLIS);
99+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
99100

100101
private final String[] dataplaneScope = new String[] {"https://attest.azure.net/.default"};
101102

@@ -438,10 +439,12 @@ private AttestationClientImpl buildInnerClient() {
438439
// which were provided.
439440
HttpPipeline pipeline = this.pipeline;
440441
if (pipeline == null) {
442+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
443+
441444
// Closest to API goes first, closest to wire goes last.
442445
final List<HttpPipelinePolicy> policies = new ArrayList<>();
443446
policies.add(new UserAgentPolicy(
444-
getApplicationId(clientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
447+
getApplicationId(localClientOptions, httpLogOptions), CLIENT_NAME, CLIENT_VERSION, buildConfiguration));
445448
policies.add(new RequestIdPolicy());
446449
policies.add(new AddHeadersFromContextPolicy());
447450

@@ -459,12 +462,10 @@ private AttestationClientImpl buildInnerClient() {
459462
}
460463
policies.addAll(perRetryPolicies);
461464

462-
if (clientOptions != null) {
463-
List<HttpHeader> httpHeaderList = new ArrayList<>();
464-
clientOptions.getHeaders().forEach(
465-
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
466-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
467-
}
465+
List<HttpHeader> httpHeaderList = new ArrayList<>();
466+
localClientOptions.getHeaders().forEach(
467+
header -> httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
468+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
468469

469470
HttpPolicyProviders.addAfterRetryPolicies(policies);
470471
policies.add(new HttpLoggingPolicy(httpLogOptions));
@@ -473,6 +474,7 @@ private AttestationClientImpl buildInnerClient() {
473474
pipeline = new HttpPipelineBuilder()
474475
.policies(policies.toArray(new HttpPipelinePolicy[0]))
475476
.httpClient(httpClient)
477+
.clientOptions(localClientOptions)
476478
.build();
477479
}
478480

sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,11 +387,10 @@ public Mono<AccessToken> authenticateWithAzureDeveloperCli(TokenRequestContext r
387387
? LoggingUtil.logCredentialUnavailableException(LOGGER, options, (CredentialUnavailableException) e)
388388
: LOGGER.logExceptionAsError(e));
389389
}
390-
391390
}
392391

393392
/**
394-
* Asynchronously acquire a token from Active Directory with Azure Power Shell.
393+
* Asynchronously acquire a token from Active Directory with Azure PowerShell.
395394
*
396395
* @param request the details of the token request
397396
* @return a Publisher that emits an AccessToken

sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientBase.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.azure.core.http.policy.HttpPipelinePolicy;
1919
import com.azure.core.http.policy.HttpPolicyProviders;
2020
import com.azure.core.http.policy.UserAgentPolicy;
21+
import com.azure.core.util.ClientOptions;
2122
import com.azure.core.util.Configuration;
2223
import com.azure.core.util.CoreUtils;
2324
import com.azure.core.util.UserAgentUtil;
@@ -114,6 +115,7 @@ public abstract class IdentityClientBase {
114115
private static final String AZURE_IDENTITY_PROPERTIES = "azure-identity.properties";
115116
private static final String SDK_NAME = "name";
116117
private static final String SDK_VERSION = "version";
118+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
117119
private final Map<String, String> properties;
118120

119121

@@ -779,15 +781,16 @@ HttpPipeline setupPipeline(HttpClient httpClient) {
779781

780782
HttpLogOptions httpLogOptions = (options.getHttpLogOptions() == null) ? new HttpLogOptions() : options.getHttpLogOptions();
781783

782-
userAgent = UserAgentUtil.toUserAgentString(CoreUtils.getApplicationId(options.getClientOptions(), httpLogOptions), clientName, clientVersion, buildConfiguration);
784+
ClientOptions localClientOptions = options.getClientOptions() != null
785+
? options.getClientOptions() : DEFAULT_CLIENT_OPTIONS;
786+
787+
userAgent = UserAgentUtil.toUserAgentString(CoreUtils.getApplicationId(localClientOptions, httpLogOptions), clientName, clientVersion, buildConfiguration);
783788
policies.add(new UserAgentPolicy(userAgent));
784789

785-
if (options.getClientOptions() != null) {
786-
List<HttpHeader> httpHeaderList = new ArrayList<>();
787-
options.getClientOptions().getHeaders().forEach(header ->
788-
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
789-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
790-
}
790+
List<HttpHeader> httpHeaderList = new ArrayList<>();
791+
localClientOptions.getHeaders().forEach(header ->
792+
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
793+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
791794

792795
policies.addAll(options.getPerCallPolicies());
793796
HttpPolicyProviders.addBeforeRetryPolicies(policies);
@@ -797,6 +800,7 @@ HttpPipeline setupPipeline(HttpClient httpClient) {
797800
HttpPolicyProviders.addAfterRetryPolicies(policies);
798801
policies.add(new HttpLoggingPolicy(httpLogOptions));
799802
return new HttpPipelineBuilder().httpClient(httpClient)
803+
.clientOptions(localClientOptions)
800804
.policies(policies.toArray(new HttpPipelinePolicy[0])).build();
801805
}
802806

sdk/keyvault/azure-security-keyvault-administration/src/main/java/com/azure/security/keyvault/administration/KeyVaultAccessControlClientBuilder.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public final class KeyVaultAccessControlClientBuilder implements
8484
private static final String AZURE_KEY_VAULT_RBAC = "azure-key-vault-administration.properties";
8585
private static final String SDK_NAME = "name";
8686
private static final String SDK_VERSION = "version";
87+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
8788

8889
private final List<HttpPipelinePolicy> perCallPolicies;
8990
private final List<HttpPipelinePolicy> perRetryPolicies;
@@ -193,15 +194,15 @@ private HttpPipeline getPipeline(Configuration buildConfiguration, ServiceVersio
193194

194195
httpLogOptions = (httpLogOptions == null) ? new HttpLogOptions() : httpLogOptions;
195196

196-
policies.add(new UserAgentPolicy(CoreUtils.getApplicationId(clientOptions, httpLogOptions), clientName,
197+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
198+
199+
policies.add(new UserAgentPolicy(CoreUtils.getApplicationId(localClientOptions, httpLogOptions), clientName,
197200
clientVersion, buildConfiguration));
198201

199-
if (clientOptions != null) {
200-
List<HttpHeader> httpHeaderList = new ArrayList<>();
201-
clientOptions.getHeaders().forEach(header ->
202-
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
203-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
204-
}
202+
List<HttpHeader> httpHeaderList = new ArrayList<>();
203+
localClientOptions.getHeaders().forEach(header ->
204+
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
205+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
205206

206207
// Add per call additional policies.
207208
policies.addAll(perCallPolicies);
@@ -218,14 +219,15 @@ private HttpPipeline getPipeline(Configuration buildConfiguration, ServiceVersio
218219
HttpPolicyProviders.addAfterRetryPolicies(policies);
219220
policies.add(new HttpLoggingPolicy(httpLogOptions));
220221

221-
TracingOptions tracingOptions = clientOptions == null ? null : clientOptions.getTracingOptions();
222+
TracingOptions tracingOptions = localClientOptions.getTracingOptions();
222223
Tracer tracer = TracerProvider.getDefaultProvider()
223224
.createTracer(clientName, clientVersion, KEYVAULT_TRACING_NAMESPACE_VALUE, tracingOptions);
224225

225226
return new HttpPipelineBuilder()
226227
.policies(policies.toArray(new HttpPipelinePolicy[0]))
227228
.httpClient(httpClient)
228229
.tracer(tracer)
230+
.clientOptions(localClientOptions)
229231
.build();
230232
}
231233

sdk/keyvault/azure-security-keyvault-administration/src/main/java/com/azure/security/keyvault/administration/KeyVaultBackupClientBuilder.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ public final class KeyVaultBackupClientBuilder implements
8686
// Please see <a href=https://docs.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers>here</a>
8787
// for more information on Azure resource provider namespaces.
8888
private static final String KEYVAULT_TRACING_NAMESPACE_VALUE = "Microsoft.KeyVault";
89+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
90+
8991
private final List<HttpPipelinePolicy> perCallPolicies;
9092
private final List<HttpPipelinePolicy> perRetryPolicies;
9193
private final Map<String, String> properties;
@@ -189,15 +191,15 @@ private HttpPipeline getPipeline(Configuration buildConfiguration) {
189191

190192
httpLogOptions = (httpLogOptions == null) ? new HttpLogOptions() : httpLogOptions;
191193

192-
policies.add(new UserAgentPolicy(CoreUtils.getApplicationId(clientOptions, httpLogOptions), clientName,
194+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
195+
196+
policies.add(new UserAgentPolicy(CoreUtils.getApplicationId(localClientOptions, httpLogOptions), clientName,
193197
clientVersion, buildConfiguration));
194198

195-
if (clientOptions != null) {
196-
List<HttpHeader> httpHeaderList = new ArrayList<>();
197-
clientOptions.getHeaders().forEach(header ->
198-
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
199-
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
200-
}
199+
List<HttpHeader> httpHeaderList = new ArrayList<>();
200+
localClientOptions.getHeaders().forEach(header ->
201+
httpHeaderList.add(new HttpHeader(header.getName(), header.getValue())));
202+
policies.add(new AddHeadersPolicy(new HttpHeaders(httpHeaderList)));
201203

202204
// Add per call additional policies.
203205
policies.addAll(perCallPolicies);
@@ -214,13 +216,14 @@ private HttpPipeline getPipeline(Configuration buildConfiguration) {
214216
HttpPolicyProviders.addAfterRetryPolicies(policies);
215217
policies.add(new HttpLoggingPolicy(httpLogOptions));
216218

217-
TracingOptions tracingOptions = clientOptions == null ? null : clientOptions.getTracingOptions();
219+
TracingOptions tracingOptions = localClientOptions.getTracingOptions();
218220
Tracer tracer = TracerProvider.getDefaultProvider()
219221
.createTracer(clientName, clientVersion, KEYVAULT_TRACING_NAMESPACE_VALUE, tracingOptions);
220222

221223
return new HttpPipelineBuilder()
222224
.policies(policies.toArray(new HttpPipelinePolicy[0]))
223225
.httpClient(httpClient)
226+
.clientOptions(localClientOptions)
224227
.tracer(tracer)
225228
.build();
226229
}

sdk/keyvault/azure-security-keyvault-administration/src/main/java/com/azure/security/keyvault/administration/KeyVaultSettingsClientBuilder.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ public final class KeyVaultSettingsClientBuilder implements
7272
// Please see <a href=https://docs.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers>here</a>
7373
// for more information on Azure resource provider namespaces.
7474
private static final String KEYVAULT_TRACING_NAMESPACE_VALUE = "Microsoft.KeyVault";
75+
private static final ClientOptions DEFAULT_CLIENT_OPTIONS = new ClientOptions();
76+
7577
private final List<HttpPipelinePolicy> pipelinePolicies;
7678
private final Map<String, String> properties;
7779

@@ -389,20 +391,18 @@ private HttpPipeline createHttpPipeline() {
389391

390392
httpLogOptions = (httpLogOptions == null) ? new HttpLogOptions() : httpLogOptions;
391393

392-
String applicationId = CoreUtils.getApplicationId(clientOptions, httpLogOptions);
394+
ClientOptions localClientOptions = clientOptions != null ? clientOptions : DEFAULT_CLIENT_OPTIONS;
395+
396+
String applicationId = CoreUtils.getApplicationId(localClientOptions, httpLogOptions);
393397

394398
policies.add(new UserAgentPolicy(applicationId, clientName, clientVersion, buildConfiguration));
395399
policies.add(new RequestIdPolicy());
396400
policies.add(new AddHeadersFromContextPolicy());
397401

398-
if (clientOptions != null) {
399-
HttpHeaders headers = new HttpHeaders();
400-
401-
clientOptions.getHeaders().forEach(header -> headers.set(header.getName(), header.getValue()));
402-
403-
if (headers.getSize() > 0) {
404-
policies.add(new AddHeadersPolicy(headers));
405-
}
402+
HttpHeaders headers = new HttpHeaders();
403+
localClientOptions.getHeaders().forEach(header -> headers.set(header.getName(), header.getValue()));
404+
if (headers.getSize() > 0) {
405+
policies.add(new AddHeadersPolicy(headers));
406406
}
407407

408408
policies.addAll(
@@ -423,14 +423,14 @@ private HttpPipeline createHttpPipeline() {
423423
HttpPolicyProviders.addAfterRetryPolicies(policies);
424424
policies.add(new HttpLoggingPolicy(httpLogOptions));
425425

426-
TracingOptions tracingOptions = clientOptions == null ? null : clientOptions.getTracingOptions();
426+
TracingOptions tracingOptions = localClientOptions.getTracingOptions();
427427
Tracer tracer = TracerProvider.getDefaultProvider()
428428
.createTracer(clientName, clientVersion, KEYVAULT_TRACING_NAMESPACE_VALUE, tracingOptions);
429429

430430
return new HttpPipelineBuilder()
431431
.policies(policies.toArray(new HttpPipelinePolicy[0]))
432432
.httpClient(httpClient)
433-
.clientOptions(clientOptions)
433+
.clientOptions(localClientOptions)
434434
.tracer(tracer)
435435
.build();
436436
}

0 commit comments

Comments
 (0)