Compare commits

...

1 Commits

Author SHA1 Message Date
Tiago Salvado
e63ad92ed9 [MNT-23241] Prevent duplicated default headers based on override flag 2022-09-28 18:29:37 +01:00
3 changed files with 37 additions and 3 deletions

View File

@@ -203,7 +203,18 @@ public abstract class AbstractHttpClient implements AlfrescoHttpClient
} }
} }
/*
* @see AlfrescoHttpClient#setOverrideDefaultHeaders(boolean)
*/
public void setOverrideDefaultHeaders(boolean override)
{
if (httpClient != null)
{
if (httpClient instanceof RequestHeadersHttpClient)
{
((RequestHeadersHttpClient) httpClient).setOverrideDefaultHeaders(override);
}
}
}
} }

View File

@@ -27,4 +27,13 @@ public interface AlfrescoHttpClient
* *
*/ */
public void close(); public void close();
/**
* Allows to override (or not) the default headers that will be included in HTTP requests
*
* @param override
* if true, it will prevent the default headers to be duplicated, otherwise the request may contain
* multiple instances of the same header
*/
public void setOverrideDefaultHeaders(boolean override);
} }

View File

@@ -21,6 +21,7 @@ package org.alfresco.httpclient;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpException;
@@ -36,6 +37,8 @@ public class RequestHeadersHttpClient extends HttpClient
{ {
private Map<String, String> defaultHeaders; private Map<String, String> defaultHeaders;
private boolean overrideDefaultHeaders = false;
public RequestHeadersHttpClient(MultiThreadedHttpConnectionManager connectionManager) public RequestHeadersHttpClient(MultiThreadedHttpConnectionManager connectionManager)
{ {
@@ -57,7 +60,14 @@ public class RequestHeadersHttpClient extends HttpClient
if (defaultHeaders != null) if (defaultHeaders != null)
{ {
defaultHeaders.forEach((k,v) -> { defaultHeaders.forEach((k,v) -> {
method.addRequestHeader(k, v); if (overrideDefaultHeaders)
{
method.setRequestHeader(k, v);
}
else
{
method.addRequestHeader(k, v);
}
}); });
} }
} }
@@ -84,4 +94,8 @@ public class RequestHeadersHttpClient extends HttpClient
return super.executeMethod(hostconfig, method, state); return super.executeMethod(hostconfig, method, state);
} }
public void setOverrideDefaultHeaders(boolean overrideDefaultHeaders)
{
this.overrideDefaultHeaders = overrideDefaultHeaders;
}
} }