From eccfbf67d51c16a853de82119d9e19d7f3049cc3 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Mon, 2 Dec 2019 00:03:51 -0800 Subject: [PATCH 01/10] initial design --- .../core/http/policy/AddHeadersPolicy.java | 17 ++++++++-- .../core/http/policy/RequestIdPolicy.java | 31 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java index b2403e9ad987..93b9fcb3e5ab 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java @@ -10,11 +10,23 @@ import com.azure.core.http.HttpResponse; import reactor.core.publisher.Mono; +import java.util.Objects; +import java.util.function.Supplier; + /** * The pipeline policy that adds a particular set of headers to HTTP requests. */ public class AddHeadersPolicy implements HttpPipelinePolicy { - private final HttpHeaders headers; + private final Supplier headersSupplier; + + /** + * Creates a AddHeadersPolicy provided {@link Supplier}. + * + * @param headersSupplier The {@link Supplier} to provide headers to add to outgoing requests. + */ + public AddHeadersPolicy(Supplier headersSupplier) { + this.headersSupplier = Objects.requireNonNull(headersSupplier, "headersSuppliercan not be null."); + } /** * Creates a AddHeadersPolicy. @@ -22,11 +34,12 @@ public class AddHeadersPolicy implements HttpPipelinePolicy { * @param headers The headers to add to outgoing requests. */ public AddHeadersPolicy(HttpHeaders headers) { - this.headers = headers; + this.headersSupplier = () -> headers; } @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { + HttpHeaders headers = headersSupplier.get(); for (HttpHeader header : headers) { context.getHttpRequest().setHeader(header.getName(), header.getValue()); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java index 389386519cf9..85aeff20cd85 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java @@ -3,12 +3,15 @@ package com.azure.core.http.policy; +import com.azure.core.http.HttpHeader; import com.azure.core.http.HttpPipelineCallContext; import com.azure.core.http.HttpPipelineNextPolicy; import com.azure.core.http.HttpResponse; import reactor.core.publisher.Mono; +import java.util.Objects; import java.util.UUID; +import java.util.function.Supplier; /** * The pipeline policy that puts a UUID in the request header. Azure uses the request id as @@ -16,9 +19,37 @@ */ public class RequestIdPolicy implements HttpPipelinePolicy { private static final String REQUEST_ID_HEADER = "x-ms-client-request-id"; + private final Supplier requestIdSupplier; + + + /** + * Creates a RequestIdPolicy provided {@link Supplier}. + * + * @param headerSupplier The {@link Supplier} to provide header to add to outgoing requests. + */ + public RequestIdPolicy(Supplier headerSupplier) { + this.requestIdSupplier = Objects.requireNonNull(headerSupplier, "headerSupplier not be null."); + } + + /** + * Creates default {@link RequestIdPolicy}. + */ + public RequestIdPolicy() { + requestIdSupplier = () -> new HttpHeader(REQUEST_ID_HEADER, UUID.randomUUID().toString()); + } @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { + HttpHeader httpHeader = requestIdSupplier.get(); + if (Objects.nonNull(httpHeader)) { + String requestIdHeaderValue = context.getHttpRequest().getHeaders().getValue(httpHeader.getName()); + if (requestIdHeaderValue == null) { + context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + } + return next.process(); + } + + // If we were not able to set client provided Request ID header, we will set default 'REQUEST_ID_HEADER'. String requestId = context.getHttpRequest().getHeaders().getValue(REQUEST_ID_HEADER); if (requestId == null) { context.getHttpRequest().getHeaders().put(REQUEST_ID_HEADER, UUID.randomUUID().toString()); From 5e650a68eed3e29a3dd02352e4750efd8e49ac36 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Wed, 4 Dec 2019 10:03:46 -0800 Subject: [PATCH 02/10] Adding OverrideHeaderPolicy as discussed. --- .../http/policy/OverrideHeaderPolicy.java | 33 +++++++++++++++ .../core/http/policy/RequestIdPolicy.java | 40 +++++++------------ .../java/com/azure/core/util/Context.java | 4 ++ 3 files changed, 52 insertions(+), 25 deletions(-) create mode 100644 sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java new file mode 100644 index 000000000000..50a50055c821 --- /dev/null +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java @@ -0,0 +1,33 @@ +package com.azure.core.http.policy; + +import com.azure.core.http.HttpHeader; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpPipelineCallContext; +import com.azure.core.http.HttpPipelineNextPolicy; +import com.azure.core.http.HttpResponse; +import com.azure.core.util.Context; +import com.azure.core.http.HttpRequest; +import static com.azure.core.util.Context.AZURE_REQUEST_HTTP_HEADERS_KEY; +import reactor.core.publisher.Mono; + +import java.util.Objects; + +/** + * The pipeline policy that override or add {@link HttpHeader} in {@link HttpRequest} by reading values from + * {@link Context} with key 'azure-request-override-http-headers-key'. + */ +public class OverrideHeaderPolicy implements HttpPipelinePolicy { + + @Override + public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { + if (!Objects.isNull(context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY))) { + HttpHeaders customHttpHeaders = (HttpHeaders) context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY).get(); + // loop through customHttpHeaders and add header in HttpRequest + for (HttpHeader httpHeader : customHttpHeaders) { + context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + } + } + return next.process(); + + } +} diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java index 85aeff20cd85..e5079daebb3f 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java @@ -3,56 +3,46 @@ package com.azure.core.http.policy; -import com.azure.core.http.HttpHeader; import com.azure.core.http.HttpPipelineCallContext; import com.azure.core.http.HttpPipelineNextPolicy; import com.azure.core.http.HttpResponse; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.HttpHeader; import reactor.core.publisher.Mono; import java.util.Objects; import java.util.UUID; -import java.util.function.Supplier; /** - * The pipeline policy that puts a UUID in the request header. Azure uses the request id as - * the unique identifier for the request. + * The pipeline policy that puts a UUID in the request header. The default {@link HttpHeader} name can be overwritten. + * Azure uses the request id as the unique identifier for the request. */ public class RequestIdPolicy implements HttpPipelinePolicy { - private static final String REQUEST_ID_HEADER = "x-ms-client-request-id"; - private final Supplier requestIdSupplier; + private static final String REQUEST_ID_HEADER = "x-ms-client-request-id"; + private final String requestIdHeaderName; /** - * Creates a RequestIdPolicy provided {@link Supplier}. - * - * @param headerSupplier The {@link Supplier} to provide header to add to outgoing requests. + * Creates {@link RequestIdPolicy} with provided {@code requestIdHeaderName}. + * @param requestIdHeaderName to be used to set in {@link HttpRequest}. */ - public RequestIdPolicy(Supplier headerSupplier) { - this.requestIdSupplier = Objects.requireNonNull(headerSupplier, "headerSupplier not be null."); + public RequestIdPolicy(String requestIdHeaderName) { + this.requestIdHeaderName = Objects.requireNonNull(requestIdHeaderName, + "messageIdHeaderName can not be null."); } /** - * Creates default {@link RequestIdPolicy}. + * Creates default {@link RequestIdPolicy} with default header name 'x-ms-client-request-id'. */ public RequestIdPolicy() { - requestIdSupplier = () -> new HttpHeader(REQUEST_ID_HEADER, UUID.randomUUID().toString()); + requestIdHeaderName = REQUEST_ID_HEADER; } @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - HttpHeader httpHeader = requestIdSupplier.get(); - if (Objects.nonNull(httpHeader)) { - String requestIdHeaderValue = context.getHttpRequest().getHeaders().getValue(httpHeader.getName()); - if (requestIdHeaderValue == null) { - context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); - } - return next.process(); - } - - // If we were not able to set client provided Request ID header, we will set default 'REQUEST_ID_HEADER'. - String requestId = context.getHttpRequest().getHeaders().getValue(REQUEST_ID_HEADER); + String requestId = context.getHttpRequest().getHeaders().getValue(requestIdHeaderName); if (requestId == null) { - context.getHttpRequest().getHeaders().put(REQUEST_ID_HEADER, UUID.randomUUID().toString()); + context.getHttpRequest().getHeaders().put(requestIdHeaderName, UUID.randomUUID().toString()); } return next.process(); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java index 6cc464cc8e42..ec8da1b9acab 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java @@ -5,6 +5,7 @@ import com.azure.core.annotation.Immutable; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.http.HttpHeaders; import java.util.HashMap; import java.util.Map; @@ -23,6 +24,9 @@ public class Context { private final ClientLogger logger = new ClientLogger(Context.class); + /**Key used to override headers in HttpRequest. The Value for this key should be {@link HttpHeaders}.*/ + public static String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-request-override-http-headers-key"; + // All fields must be immutable. // /** From bf58b5d100fab3d5ff087da60b063c2b65884ea0 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Wed, 4 Dec 2019 10:31:21 -0800 Subject: [PATCH 03/10] Adding more documentation and validations. --- .../core/http/policy/AddHeadersPolicy.java | 17 ++--------------- .../core/http/policy/OverrideHeaderPolicy.java | 14 ++++++++++---- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java index 93b9fcb3e5ab..b2403e9ad987 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersPolicy.java @@ -10,23 +10,11 @@ import com.azure.core.http.HttpResponse; import reactor.core.publisher.Mono; -import java.util.Objects; -import java.util.function.Supplier; - /** * The pipeline policy that adds a particular set of headers to HTTP requests. */ public class AddHeadersPolicy implements HttpPipelinePolicy { - private final Supplier headersSupplier; - - /** - * Creates a AddHeadersPolicy provided {@link Supplier}. - * - * @param headersSupplier The {@link Supplier} to provide headers to add to outgoing requests. - */ - public AddHeadersPolicy(Supplier headersSupplier) { - this.headersSupplier = Objects.requireNonNull(headersSupplier, "headersSuppliercan not be null."); - } + private final HttpHeaders headers; /** * Creates a AddHeadersPolicy. @@ -34,12 +22,11 @@ public AddHeadersPolicy(Supplier headersSupplier) { * @param headers The headers to add to outgoing requests. */ public AddHeadersPolicy(HttpHeaders headers) { - this.headersSupplier = () -> headers; + this.headers = headers; } @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - HttpHeaders headers = headersSupplier.get(); for (HttpHeader header : headers) { context.getHttpRequest().setHeader(header.getName(), header.getValue()); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java index 50a50055c821..b57a2bd8d412 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java @@ -11,20 +11,26 @@ import reactor.core.publisher.Mono; import java.util.Objects; +import java.util.Optional; /** * The pipeline policy that override or add {@link HttpHeader} in {@link HttpRequest} by reading values from - * {@link Context} with key 'azure-request-override-http-headers-key'. + * {@link Context} with key 'azure-request-override-http-headers-key'. The value for this key should be of type + * {@link HttpHeaders} for it to be added in {@link HttpRequest}. */ public class OverrideHeaderPolicy implements HttpPipelinePolicy { @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - if (!Objects.isNull(context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY))) { - HttpHeaders customHttpHeaders = (HttpHeaders) context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY).get(); + + Optional customHttpHeadersObject = context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY); + if (!Objects.isNull(customHttpHeadersObject) && customHttpHeadersObject.get() instanceof HttpHeaders) { + HttpHeaders customHttpHeaders = (HttpHeaders) customHttpHeadersObject.get(); // loop through customHttpHeaders and add header in HttpRequest for (HttpHeader httpHeader : customHttpHeaders) { - context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + if (!Objects.isNull(httpHeader.getName()) && !Objects.isNull(httpHeader.getValue())) { + context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + } } } return next.process(); From f7d4359c3a36e23e0e5d25c676f321aca9df342a Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Wed, 4 Dec 2019 15:17:33 -0800 Subject: [PATCH 04/10] Renamed OverrideHeaderPolicy to AddHeadersFromContextPolicy and resolved other review comments. --- ....java => AddHeadersFromContextPolicy.java} | 15 +++++++++----- .../core/http/policy/RequestIdPolicy.java | 8 ++++++-- .../java/com/azure/core/util/Context.java | 2 +- .../RequestIdPolicyJavaDocCodeSnippet.java | 20 +++++++++++++++++++ 4 files changed, 37 insertions(+), 8 deletions(-) rename sdk/core/azure-core/src/main/java/com/azure/core/http/policy/{OverrideHeaderPolicy.java => AddHeadersFromContextPolicy.java} (67%) create mode 100644 sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java similarity index 67% rename from sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java rename to sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index b57a2bd8d412..a4222dd13312 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/OverrideHeaderPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + package com.azure.core.http.policy; import com.azure.core.http.HttpHeader; @@ -14,19 +17,21 @@ import java.util.Optional; /** - * The pipeline policy that override or add {@link HttpHeader} in {@link HttpRequest} by reading values from - * {@link Context} with key 'azure-request-override-http-headers-key'. The value for this key should be of type + * The pipeline policy that override or add {@link HttpHeaders} in {@link HttpRequest} by reading values from + * {@link Context} with key 'azure-request-override-http-headers-key'. The value for this key should be of type * {@link HttpHeaders} for it to be added in {@link HttpRequest}. */ -public class OverrideHeaderPolicy implements HttpPipelinePolicy { +public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { Optional customHttpHeadersObject = context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY); - if (!Objects.isNull(customHttpHeadersObject) && customHttpHeadersObject.get() instanceof HttpHeaders) { + if (customHttpHeadersObject.isPresent() + && customHttpHeadersObject.get() instanceof HttpHeaders) { + HttpHeaders customHttpHeaders = (HttpHeaders) customHttpHeadersObject.get(); - // loop through customHttpHeaders and add header in HttpRequest + // loop through customHttpHeaders and add headers in HttpRequest for (HttpHeader httpHeader : customHttpHeaders) { if (!Objects.isNull(httpHeader.getName()) && !Objects.isNull(httpHeader.getValue())) { context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java index e5079daebb3f..50e3311f048a 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java @@ -14,8 +14,12 @@ import java.util.UUID; /** - * The pipeline policy that puts a UUID in the request header. The default {@link HttpHeader} name can be overwritten. - * Azure uses the request id as the unique identifier for the request. + * The pipeline policy that puts a UUID in the request header. Azure uses the request id as + * the unique identifier for the request. + * + *

The default {@link HttpHeader} name can be overwritten as shown below + *

Code sample

+ * {@codesnippet com.azure.core.http.policy.RequestIdPolicy.constructor.overrideRequestIdHeaderName} */ public class RequestIdPolicy implements HttpPipelinePolicy { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java index ec8da1b9acab..afb13bc39b75 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java @@ -25,7 +25,7 @@ public class Context { private final ClientLogger logger = new ClientLogger(Context.class); /**Key used to override headers in HttpRequest. The Value for this key should be {@link HttpHeaders}.*/ - public static String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-request-override-http-headers-key"; + public static final String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-request-override-http-headers-key"; // All fields must be immutable. // diff --git a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java new file mode 100644 index 000000000000..3f3f99871492 --- /dev/null +++ b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.core.http.policy; + +/** + * Code snippets for {@link RequestIdPolicy} + */ +public class RequestIdPolicyJavaDocCodeSnippet { + + /** + * Code snippets for using {@link RequestIdPolicy#RequestIdPolicy(String)} } + */ + public void overrideRequestIdHeaderName() { + + // BEGIN: com.azure.core.http.policy.RequestIdPolicy.constructor.overrideRequestIdHeaderName + RequestIdPolicy requestIdPolicy = new RequestIdPolicy("x-ms-my-custom-request-id"); + // END: com.azure.core.http.policy.RequestIdPolicy.constructor.overrideRequestIdHeaderName + } +} From 04c34a2fbd75e9bd474be2634459f747184b1356 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Thu, 5 Dec 2019 11:29:03 -0800 Subject: [PATCH 05/10] Adding unit test and incorporating review comments. --- .../policy/AddHeadersFromContextPolicy.java | 5 +- .../java/com/azure/core/util/Context.java | 2 +- .../AddHeadersFromContextPolicyTest.java | 88 +++++++++++++++++++ 3 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index a4222dd13312..4bf1eb8b364c 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -10,15 +10,16 @@ import com.azure.core.http.HttpResponse; import com.azure.core.util.Context; import com.azure.core.http.HttpRequest; -import static com.azure.core.util.Context.AZURE_REQUEST_HTTP_HEADERS_KEY; import reactor.core.publisher.Mono; +import static com.azure.core.util.Context.AZURE_REQUEST_HTTP_HEADERS_KEY; + import java.util.Objects; import java.util.Optional; /** * The pipeline policy that override or add {@link HttpHeaders} in {@link HttpRequest} by reading values from - * {@link Context} with key 'azure-request-override-http-headers-key'. The value for this key should be of type + * {@link Context} with key 'azure-http-headers-key'. The value for this key should be of type * {@link HttpHeaders} for it to be added in {@link HttpRequest}. */ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java index afb13bc39b75..7ae6d9479b90 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java @@ -25,7 +25,7 @@ public class Context { private final ClientLogger logger = new ClientLogger(Context.class); /**Key used to override headers in HttpRequest. The Value for this key should be {@link HttpHeaders}.*/ - public static final String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-request-override-http-headers-key"; + public static final String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-http-headers-key"; // All fields must be immutable. // diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java new file mode 100644 index 000000000000..d8812812597e --- /dev/null +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.core.http.policy; + +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpMethod; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.HttpResponse; +import com.azure.core.http.clients.NoOpHttpClient; +import com.azure.core.util.Context; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.net.URL; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; + +public class AddHeadersFromContextPolicyTest { + + private final HttpResponse mockResponse = new HttpResponse(null) { + @Override + public int getStatusCode() { + return 500; + } + + @Override + public String getHeaderValue(String name) { + return null; + } + + @Override + public HttpHeaders getHeaders() { + return new HttpHeaders(); + } + + @Override + public Mono getBodyAsByteArray() { + return Mono.empty(); + } + + @Override + public Flux getBody() { + return Flux.empty(); + } + + @Override + public Mono getBodyAsString() { + return Mono.empty(); + } + + @Override + public Mono getBodyAsString(Charset charset) { + return Mono.empty(); + } + }; + + @Test + public void clientProvidedMultipleHeaderTest() throws Exception { + // Create custom Headers + String customRequestId = "request-id-value"; + final HttpHeaders headers = new HttpHeaders(); + headers.put("x-ms-client-request-id", customRequestId); + headers.put("my-header1", "my-header1-value"); + headers.put("my-header2", "my-header2-value"); + + final HttpPipeline pipeline = new HttpPipelineBuilder() + .httpClient(new NoOpHttpClient() { + + @Override + public Mono send(HttpRequest request) { + Assertions.assertEquals(request.getHeaders().getValue("x-ms-client-request-id"), customRequestId); + Assertions.assertEquals(request.getHeaders().getValue("my-header1"), "my-header1-value"); + Assertions.assertEquals(request.getHeaders().getValue("my-header2"), "my-header2-value"); + return Mono.just(mockResponse); + } + }) + .policies(new RequestIdPolicy()) + .policies(new AddHeadersFromContextPolicy()) + .build(); + + pipeline.send(new HttpRequest(HttpMethod.GET, new URL("http://localhost/")), new Context(Context.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)).block(); + } +} From ecbc5dc57faae870918a0c0e6de018781850e846 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Thu, 5 Dec 2019 14:56:05 -0800 Subject: [PATCH 06/10] fix checkstyle issue in Java snippet --- .../core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java index 3f3f99871492..64eaa194ad07 100644 --- a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java +++ b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/RequestIdPolicyJavaDocCodeSnippet.java @@ -14,7 +14,7 @@ public class RequestIdPolicyJavaDocCodeSnippet { public void overrideRequestIdHeaderName() { // BEGIN: com.azure.core.http.policy.RequestIdPolicy.constructor.overrideRequestIdHeaderName - RequestIdPolicy requestIdPolicy = new RequestIdPolicy("x-ms-my-custom-request-id"); + new RequestIdPolicy("x-ms-my-custom-request-id"); // END: com.azure.core.http.policy.RequestIdPolicy.constructor.overrideRequestIdHeaderName } } From 5c87630d3dd41d5d40a4ff3002a5c37954840fc7 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Thu, 5 Dec 2019 15:25:58 -0800 Subject: [PATCH 07/10] Incorporating review comments --- .../http/policy/AddHeadersFromContextPolicy.java | 15 ++++++--------- .../azure/core/http/policy/RequestIdPolicy.java | 2 +- .../main/java/com/azure/core/util/Context.java | 4 ---- .../policy/AddHeadersFromContextPolicyTest.java | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index 4bf1eb8b364c..b2b7a384615d 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -12,8 +12,6 @@ import com.azure.core.http.HttpRequest; import reactor.core.publisher.Mono; -import static com.azure.core.util.Context.AZURE_REQUEST_HTTP_HEADERS_KEY; - import java.util.Objects; import java.util.Optional; @@ -24,21 +22,20 @@ */ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { + /**Key used to override headers in HttpRequest. The Value for this key should be {@link HttpHeaders}.*/ + public static final String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-http-headers-key"; + @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - - Optional customHttpHeadersObject = context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY); - if (customHttpHeadersObject.isPresent() - && customHttpHeadersObject.get() instanceof HttpHeaders) { - - HttpHeaders customHttpHeaders = (HttpHeaders) customHttpHeadersObject.get(); + context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY).ifPresent(headers -> { + HttpHeaders customHttpHeaders = (HttpHeaders) headers; // loop through customHttpHeaders and add headers in HttpRequest for (HttpHeader httpHeader : customHttpHeaders) { if (!Objects.isNull(httpHeader.getName()) && !Objects.isNull(httpHeader.getValue())) { context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); } } - } + }); return next.process(); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java index 50e3311f048a..e9634030fe6d 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RequestIdPolicy.java @@ -32,7 +32,7 @@ public class RequestIdPolicy implements HttpPipelinePolicy { */ public RequestIdPolicy(String requestIdHeaderName) { this.requestIdHeaderName = Objects.requireNonNull(requestIdHeaderName, - "messageIdHeaderName can not be null."); + "requestIdHeaderName can not be null."); } /** diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java index 7ae6d9479b90..6cc464cc8e42 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/Context.java @@ -5,7 +5,6 @@ import com.azure.core.annotation.Immutable; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.http.HttpHeaders; import java.util.HashMap; import java.util.Map; @@ -24,9 +23,6 @@ public class Context { private final ClientLogger logger = new ClientLogger(Context.class); - /**Key used to override headers in HttpRequest. The Value for this key should be {@link HttpHeaders}.*/ - public static final String AZURE_REQUEST_HTTP_HEADERS_KEY = "azure-http-headers-key"; - // All fields must be immutable. // /** diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java index d8812812597e..372cf52c1ff6 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java @@ -83,6 +83,6 @@ public Mono send(HttpRequest request) { .policies(new AddHeadersFromContextPolicy()) .build(); - pipeline.send(new HttpRequest(HttpMethod.GET, new URL("http://localhost/")), new Context(Context.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)).block(); + pipeline.send(new HttpRequest(HttpMethod.GET, new URL("http://localhost/")), new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)).block(); } } From 231a5dabd2e64b01d072154ccfd277399a4aabcb Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Fri, 6 Dec 2019 10:49:35 -0800 Subject: [PATCH 08/10] Adding code anipper for new policy and incorporating review comments. --- .../ConfigurationClientTest.java | 18 +++++++ .../policy/AddHeadersFromContextPolicy.java | 23 +++++---- ...rsFromContextPolicyJavaDocCodeSnippet.java | 47 +++++++++++++++++++ 3 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java index 07c866d3547c..bb30ea2c9d64 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java @@ -7,8 +7,13 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceExistsException; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpPipeline; import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; +import com.azure.core.http.policy.AddHeadersFromContextPolicy; import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.policy.HttpLoggingPolicy; +import com.azure.core.http.policy.HttpPipelinePolicy; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.SettingFields; import com.azure.data.appconfiguration.models.SettingSelector; @@ -57,7 +62,20 @@ protected void beforeTest() { .buildClient()); } } + private void test(){ + ConfigurationClient client = clientSetup(credentials -> new ConfigurationClientBuilder() + .connectionString("") + .httpClient(new NettyAsyncHttpClientBuilder().wiretap(true).build()) + .addPolicy(new AddHeadersFromContextPolicy()) + .buildClient()); + // This is how you can add your headers + final HttpHeaders headers = new HttpHeaders(); + headers.put("my-header1", "my-header1-value"); + headers.put("my-header2", "my-header2-value"); + headers.put("my-header3", "my-header3-value"); + client.addConfigurationSettingWithResponse( new ConfigurationSetting().setKey("key").setValue("value"), new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)); + } @Override protected void afterTest() { logger.info("Cleaning up created key values."); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index b2b7a384615d..a96322fb140c 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -13,12 +13,17 @@ import reactor.core.publisher.Mono; import java.util.Objects; -import java.util.Optional; /** * The pipeline policy that override or add {@link HttpHeaders} in {@link HttpRequest} by reading values from - * {@link Context} with key 'azure-http-headers-key'. The value for this key should be of type - * {@link HttpHeaders} for it to be added in {@link HttpRequest}. + * {@link Context} with key 'azure-http-headers-key'. The value for this key should be of type {@link HttpHeaders} for + * it to be added in {@link HttpRequest}. + * + *

Add multiple HttpHeader in Context

+ * {@codesnippet com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext} + * + *

Add Context in pipeline

+ * {@codesnippet com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest} */ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { @@ -28,11 +33,13 @@ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY).ifPresent(headers -> { - HttpHeaders customHttpHeaders = (HttpHeaders) headers; - // loop through customHttpHeaders and add headers in HttpRequest - for (HttpHeader httpHeader : customHttpHeaders) { - if (!Objects.isNull(httpHeader.getName()) && !Objects.isNull(httpHeader.getValue())) { - context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + if (headers instanceof HttpHeader) { + HttpHeaders customHttpHeaders = (HttpHeaders) headers; + // loop through customHttpHeaders and add headers in HttpRequest + for (HttpHeader httpHeader : customHttpHeaders) { + if (!Objects.isNull(httpHeader.getName()) && !Objects.isNull(httpHeader.getValue())) { + context.getHttpRequest().getHeaders().put(httpHeader.getName(), httpHeader.getValue()); + } } } }); diff --git a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java new file mode 100644 index 000000000000..77ed2e3b4c3f --- /dev/null +++ b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.core.http.policy; + +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpMethod; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.HttpRequest; +import com.azure.core.util.Context; + +import java.net.URL; + +public class AddHeadersFromContextPolicyJavaDocCodeSnippet { + + /** + * + * @throws Exception in case of error in sending the request. + */ + public void clientProvidedMultipleHeader() throws Exception { + Context context = null; + // BEGIN: com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest + final HttpPipeline pipeline = new HttpPipelineBuilder() + .policies(new AddHeadersFromContextPolicy()) + .build(); + + pipeline.send(new HttpRequest(HttpMethod.GET, new URL("http://localhost/")), context).block(); + // END: com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest + } + + /** + * + * @throws Exception in case of error in creating Context. + */ + public void clientProvidedMultipleHeaderInContext() throws Exception { + // BEGIN: com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext + final HttpHeaders headers = new HttpHeaders(); + headers.put("x-ms-client-request-id", "my-custom-request-id-value"); + headers.put("my-header1", "my-header1-value"); + headers.put("my-header2", "my-header2-value"); + + new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers); + //The generated HttpRequest will have above three headers set with specified values. + // END: com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext + } +} From 1bc9a6ad43333a84cf83b062e3a196176dc6ca54 Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Fri, 6 Dec 2019 14:01:58 -0800 Subject: [PATCH 09/10] Adding code sample in new policy --- .../ConfigurationClientTest.java | 19 ++++---- .../policy/AddHeadersFromContextPolicy.java | 24 +++++++--- ...rsFromContextPolicyJavaDocCodeSnippet.java | 47 ------------------- .../AddHeadersFromContextPolicyTest.java | 1 - 4 files changed, 29 insertions(+), 62 deletions(-) delete mode 100644 sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java index bb30ea2c9d64..c8f2e2bb9091 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java @@ -9,6 +9,7 @@ import com.azure.core.exception.ResourceExistsException; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; import com.azure.core.http.policy.AddHeadersFromContextPolicy; import com.azure.core.http.policy.HttpLogOptions; @@ -63,18 +64,20 @@ protected void beforeTest() { } } private void test(){ - ConfigurationClient client = clientSetup(credentials -> new ConfigurationClientBuilder() - .connectionString("") - .httpClient(new NettyAsyncHttpClientBuilder().wiretap(true).build()) - .addPolicy(new AddHeadersFromContextPolicy()) - .buildClient()); - // This is how you can add your headers + HttpPipeline pipeline = new HttpPipelineBuilder() + .policies(new AddHeadersFromContextPolicy()) + .build(); + ConfigurationClient configurationClient = new ConfigurationClientBuilder() + .pipeline(pipeline) + .endpoint("https://myconfig.azure.net/") + .connectionString("") + .buildClient(); + // Add your headers final HttpHeaders headers = new HttpHeaders(); headers.put("my-header1", "my-header1-value"); headers.put("my-header2", "my-header2-value"); headers.put("my-header3", "my-header3-value"); - client.addConfigurationSettingWithResponse( new ConfigurationSetting().setKey("key").setValue("value"), new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)); - + configurationClient.addConfigurationSettingWithResponse( new ConfigurationSetting().setKey("key").setValue("value"), new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)); } @Override protected void afterTest() { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index a96322fb140c..26caf06f4bb6 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -19,11 +19,23 @@ * {@link Context} with key 'azure-http-headers-key'. The value for this key should be of type {@link HttpHeaders} for * it to be added in {@link HttpRequest}. * - *

Add multiple HttpHeader in Context

- * {@codesnippet com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext} - * - *

Add Context in pipeline

- * {@codesnippet com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest} + *

Code Sample: Add multiple HttpHeader in Context and call client

+ *
+ * // Create ConfigurationClient for example
+ * ConfigurationClient configurationClient = new ConfigurationClientBuilder()
+ *       .connectionString("endpoint={endpoint_value};id={id_value};secret={secret_value}")
+ *       .buildClient();
+ * // Add your headers
+ * HttpHeaders headers = new HttpHeaders();
+ * headers.put("my-header1", "my-header1-value");
+ * headers.put("my-header2", "my-header2-value");
+ * headers.put("my-header3", "my-header3-value");
+ * // Call API by passing headers in Context.
+ * configurationClient.addConfigurationSettingWithResponse(
+ *       new ConfigurationSetting().setKey("key").setValue("value"),
+ *       new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers));
+ * // Above three HttpHeader will be added in outgoing HttpRequest.
+ * 
*/ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { @@ -33,7 +45,7 @@ public class AddHeadersFromContextPolicy implements HttpPipelinePolicy { @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { context.getData(AZURE_REQUEST_HTTP_HEADERS_KEY).ifPresent(headers -> { - if (headers instanceof HttpHeader) { + if (headers instanceof HttpHeaders) { HttpHeaders customHttpHeaders = (HttpHeaders) headers; // loop through customHttpHeaders and add headers in HttpRequest for (HttpHeader httpHeader : customHttpHeaders) { diff --git a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java b/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java deleted file mode 100644 index 77ed2e3b4c3f..000000000000 --- a/sdk/core/azure-core/src/samples/java/com/azure/core/http/policy/AddHeadersFromContextPolicyJavaDocCodeSnippet.java +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.core.http.policy; - -import com.azure.core.http.HttpHeaders; -import com.azure.core.http.HttpMethod; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; -import com.azure.core.http.HttpRequest; -import com.azure.core.util.Context; - -import java.net.URL; - -public class AddHeadersFromContextPolicyJavaDocCodeSnippet { - - /** - * - * @throws Exception in case of error in sending the request. - */ - public void clientProvidedMultipleHeader() throws Exception { - Context context = null; - // BEGIN: com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest - final HttpPipeline pipeline = new HttpPipelineBuilder() - .policies(new AddHeadersFromContextPolicy()) - .build(); - - pipeline.send(new HttpRequest(HttpMethod.GET, new URL("http://localhost/")), context).block(); - // END: com.azure.core.http.policy.AddHeadersFromContextPolicy.provideContexWhenSendingRequest - } - - /** - * - * @throws Exception in case of error in creating Context. - */ - public void clientProvidedMultipleHeaderInContext() throws Exception { - // BEGIN: com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext - final HttpHeaders headers = new HttpHeaders(); - headers.put("x-ms-client-request-id", "my-custom-request-id-value"); - headers.put("my-header1", "my-header1-value"); - headers.put("my-header2", "my-header2-value"); - - new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers); - //The generated HttpRequest will have above three headers set with specified values. - // END: com.azure.core.http.policy.AddHeadersFromContextPolicy.multipleCustomHeaderInContext - } -} diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java index 372cf52c1ff6..856b49957376 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/policy/AddHeadersFromContextPolicyTest.java @@ -70,7 +70,6 @@ public void clientProvidedMultipleHeaderTest() throws Exception { final HttpPipeline pipeline = new HttpPipelineBuilder() .httpClient(new NoOpHttpClient() { - @Override public Mono send(HttpRequest request) { Assertions.assertEquals(request.getHeaders().getValue("x-ms-client-request-id"), customRequestId); From 5ac34367ad923299a6cfa33ef0c1c19b5e5526bf Mon Sep 17 00:00:00 2001 From: Hemant Tanwar Date: Fri, 6 Dec 2019 14:58:38 -0800 Subject: [PATCH 10/10] Removed changes in ConfigurationClientTest . --- .../ConfigurationClientTest.java | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java index c8f2e2bb9091..07c866d3547c 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java @@ -7,14 +7,8 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceExistsException; -import com.azure.core.http.HttpHeaders; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; -import com.azure.core.http.policy.AddHeadersFromContextPolicy; import com.azure.core.http.policy.HttpLogOptions; -import com.azure.core.http.policy.HttpLoggingPolicy; -import com.azure.core.http.policy.HttpPipelinePolicy; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.SettingFields; import com.azure.data.appconfiguration.models.SettingSelector; @@ -63,22 +57,7 @@ protected void beforeTest() { .buildClient()); } } - private void test(){ - HttpPipeline pipeline = new HttpPipelineBuilder() - .policies(new AddHeadersFromContextPolicy()) - .build(); - ConfigurationClient configurationClient = new ConfigurationClientBuilder() - .pipeline(pipeline) - .endpoint("https://myconfig.azure.net/") - .connectionString("") - .buildClient(); - // Add your headers - final HttpHeaders headers = new HttpHeaders(); - headers.put("my-header1", "my-header1-value"); - headers.put("my-header2", "my-header2-value"); - headers.put("my-header3", "my-header3-value"); - configurationClient.addConfigurationSettingWithResponse( new ConfigurationSetting().setKey("key").setValue("value"), new Context(AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY, headers)); - } + @Override protected void afterTest() { logger.info("Cleaning up created key values.");