From 99101bc74ada9ff40e38b13d227f53909a592fd6 Mon Sep 17 00:00:00 2001 From: Lukas Lohoff Date: Fri, 29 Mar 2019 14:25:34 +0100 Subject: [PATCH 1/2] allow to set custom headers for http requests --- .../MutableHttpServletRequest.java | 40 +++++++++++++++++++ .../MutableHttpServletRequestTest.java | 10 +++++ 2 files changed, 50 insertions(+) diff --git a/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java b/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java index 1a12bad95..92a5375b9 100644 --- a/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java +++ b/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java @@ -43,6 +43,11 @@ public class MutableHttpServletRequest extends HttpServletRequestWrapper { */ private Map customParameters; + /** + * Holds custom header mapping + */ + private Map customHeaders; + /** * */ @@ -61,6 +66,7 @@ public MutableHttpServletRequest(HttpServletRequest request) { this.customRequestURI = request.getRequestURI(); this.customParameters = new HashMap( request.getParameterMap()); + this.customHeaders = new HashMap(); } /** @@ -205,6 +211,17 @@ public void setParameter(String key, String value) { this.addParameter(key, value); } + /** + * @param key + * @param value + */ + public void setHeader(String key, String value) { + if (!StringUtils.isEmpty(this.getHeader(key))) { + this.removeHeader(key); + } + customHeaders.put(key, value); + } + /** * @param key * @param value @@ -231,6 +248,15 @@ public void removeParameter(String key) { } } + /** + * @param key + */ + public void removeHeader(String key) { + if (customHeaders.get(key) != null) { + customHeaders.remove(key); + } + } + /** * */ @@ -252,6 +278,20 @@ public Map getParameterMap() { return customParameters; } + /** + * + */ + @Override + public String getHeader(String name) { + String headerValue = customHeaders.get(name); + + // check the custom headers first + if (headerValue != null){ + return headerValue; + } + return ((HttpServletRequest) getRequest()).getHeader(name); + } + /** * */ diff --git a/src/shogun2-core/src/test/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequestTest.java b/src/shogun2-core/src/test/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequestTest.java index 5525dc2ce..bfa60c46b 100644 --- a/src/shogun2-core/src/test/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequestTest.java +++ b/src/shogun2-core/src/test/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequestTest.java @@ -32,6 +32,10 @@ public class MutableHttpServletRequestTest { private static final String CUSTOM_REQUEST_PARAMETER_VALUE = "Kagawa"; + private static final String CUSTOM_REQUEST_HEADER_KEY = "Authorization"; + + private static final String CUSTOM_REQUEST_HEADER_VALUE = "U2hpbmppOkthZ2F3YQ=="; + private MutableHttpServletRequest mutableRequest; @Before @@ -89,6 +93,12 @@ public void add_query_parameter_array() { mutableRequest.getParameter(CUSTOM_REQUEST_PARAMETER_KEY)); } + @Test + public void set_custom_header() { + mutableRequest.setHeader(CUSTOM_REQUEST_HEADER_KEY, CUSTOM_REQUEST_HEADER_VALUE); + assertEquals(CUSTOM_REQUEST_HEADER_VALUE, mutableRequest.getHeader(CUSTOM_REQUEST_HEADER_KEY)); + } + @Test public void get_parameter_map() { Map params = mutableRequest.getParameterMap(); From 19445d700da60d21531c2483458db42efbf937ee Mon Sep 17 00:00:00 2001 From: Lukas Lohoff Date: Fri, 29 Mar 2019 14:39:34 +0100 Subject: [PATCH 2/2] update javadoc --- .../util/interceptor/MutableHttpServletRequest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java b/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java index 92a5375b9..64f431730 100644 --- a/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java +++ b/src/shogun2-core/src/main/java/de/terrestris/shogun2/util/interceptor/MutableHttpServletRequest.java @@ -212,8 +212,8 @@ public void setParameter(String key, String value) { } /** - * @param key - * @param value + * @param key The header name (without a trailing colon `:`) + * @param value The header value */ public void setHeader(String key, String value) { if (!StringUtils.isEmpty(this.getHeader(key))) { @@ -284,8 +284,7 @@ public Map getParameterMap() { @Override public String getHeader(String name) { String headerValue = customHeaders.get(name); - - // check the custom headers first + // Check custom headers first if (headerValue != null){ return headerValue; }