diff --git a/deegree-core/deegree-core-commons/pom.xml b/deegree-core/deegree-core-commons/pom.xml
index 4a772db5c49..e665f8a14ff 100644
--- a/deegree-core/deegree-core-commons/pom.xml
+++ b/deegree-core/deegree-core-commons/pom.xml
@@ -85,10 +85,10 @@
org.apache.commons
commons-dbcp2
-
- org.apache.httpcomponents
- httpclient
-
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
org.apache.commons
commons-pool2
@@ -101,6 +101,10 @@
commons-cli
commons-cli
+
+ commons-codec
+ commons-codec
+
com.google.code.gson
gson
diff --git a/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/net/HttpUtils.java b/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/net/HttpUtils.java
index dfc6f3ba590..bae265b21d7 100644
--- a/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/net/HttpUtils.java
+++ b/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/net/HttpUtils.java
@@ -57,30 +57,32 @@
import java.util.Map.Entry;
import java.util.TreeSet;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.AuthCache;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.conn.params.ConnRoutePNames;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.FileEntity;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.impl.client.BasicAuthCache;
-import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.message.BasicNameValuePair;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.client5.http.auth.AuthCache;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.Credentials;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.entity.UrlEncodedFormEntity;
+import org.apache.hc.client5.http.impl.DefaultConnectionKeepAliveStrategy;
+import org.apache.hc.client5.http.impl.auth.BasicAuthCache;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.protocol.ClientContext;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.conn.params.ConnRoutePNames;
+import org.apache.hc.core5.http.io.entity.FileEntity;
+import org.apache.hc.core5.http.io.entity.InputStreamEntity;
+import org.apache.hc.client5.http.impl.auth.BasicScheme;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.message.BasicNameValuePair;
+/* No generic migration for classes in the `org.apache.http.params` package exists, please migrate manually */
import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.protocol.BasicHttpContext;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.BasicHttpContext;
+import org.apache.hc.core5.http.protocol.HttpContext;
import org.deegree.commons.utils.Pair;
import org.slf4j.Logger;
@@ -235,7 +237,7 @@ public static T retrieve(Worker worker, String url, Map m
public static T post(Worker worker, String url, InputStream postBody, Map headers)
throws IOException {
DURL u = new DURL(url);
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
HttpPost post = new HttpPost(url);
post.setEntity(new InputStreamEntity(postBody, -1));
if (headers != null) {
@@ -259,10 +261,10 @@ public static T post(Worker worker, String url, Map param
final int readTimeout) throws IOException {
DURL u = new DURL(url);
LOG.debug("Sending HTTP POST against {}", url);
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
client.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {
@Override
- public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
+ public long getKeepAliveDuration(ClassicHttpResponse response, HttpContext context) {
long keepAlive = super.getKeepAliveDuration(response, context);
if (keepAlive == -1) {
keepAlive = readTimeout * 1000;
@@ -297,14 +299,14 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
* inspection
* @throws IOException
*/
- public static Pair postFullResponse(Worker worker, String url, Map params,
- Map headers, final int readTimeout) throws IOException {
+ public static Pair postFullResponse(Worker worker, String url,
+ Map params, Map headers, final int readTimeout) throws IOException {
DURL u = new DURL(url);
LOG.debug("Sending HTTP POST against {}", url);
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
client.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {
@Override
- public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
+ public long getKeepAliveDuration(ClassicHttpResponse response, HttpContext context) {
long keepAlive = super.getKeepAliveDuration(response, context);
if (keepAlive == -1) {
keepAlive = readTimeout * 1000;
@@ -324,14 +326,15 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
post.addHeader(key, headers.get(key));
}
}
- HttpResponse resp = client.execute(post);
+ ClassicHttpResponse resp = client.execute(post);
HttpEntity entity = resp.getEntity();
LOG.debug("Received response with content type {}", entity.getContentType());
- return new Pair(worker.work(entity.getContent()), resp);
+ return new Pair(worker.work(entity.getContent()), resp);
}
- private static void authenticate(DefaultHttpClient client, String user, String pass, DURL u) {
- client.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, pass));
+ private static void authenticate(CloseableHttpClient client, String user, String pass, DURL u) {
+ client.getCredentialsProvider()
+ .setCredentials(new AuthScope(null, -1), new UsernamePasswordCredentials(user, pass.toCharArray()));
// preemptive authentication used to be easier in pre-4.x httpclient
AuthCache authCache = new BasicAuthCache();
BasicScheme basicAuth = new BasicScheme();
@@ -356,7 +359,7 @@ private static void authenticate(DefaultHttpClient client, String user, String p
public static T post(Worker worker, String url, File postBody, Map headers, String user,
String pass) throws IOException {
DURL u = new DURL(url);
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
HttpPost post = new HttpPost(url);
if (user != null && pass != null) {
authenticate(client, user, pass, u);
@@ -404,7 +407,7 @@ public static T get(Worker worker, String url, Map header
if (!("http".equalsIgnoreCase(protocol) || "https".equalsIgnoreCase(protocol))) {
return worker.work(u.getURL().openStream());
}
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
if (user != null && pass != null) {
authenticate(client, user, pass, u);
}
@@ -429,13 +432,13 @@ public static T get(Worker worker, String url, Map header
* @return some object from the url, null, if url is not valid
* @throws IOException
*/
- public static Pair getFullResponse(Worker worker, String url, Map headers,
- String user, String pass) throws IOException {
+ public static Pair getFullResponse(Worker worker, String url,
+ Map headers, String user, String pass) throws IOException {
DURL u = new DURL(url);
if (!u.valid()) {
return null;
}
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
if (user != null && pass != null) {
authenticate(client, user, pass, u);
}
@@ -445,11 +448,11 @@ public static Pair getFullResponse(Worker worker, String
get.addHeader(key, headers.get(key));
}
}
- HttpResponse response = client.execute(get);
- return new Pair(worker.work(response.getEntity().getContent()), response);
+ ClassicHttpResponse response = client.execute(get);
+ return new Pair(worker.work(response.getEntity().getContent()), response);
}
- public static void handleProxies(String protocol, DefaultHttpClient client, String host) {
+ public static void handleProxies(String protocol, CloseableHttpClient client, String host) {
TreeSet nops = new TreeSet();
String proxyHost = getProperty((protocol == null ? "" : protocol + ".") + "proxyHost");
@@ -474,7 +477,7 @@ public static void handleProxies(String protocol, DefaultHttpClient client, Stri
}
if (proxyUser != null) {
- Credentials creds = new UsernamePasswordCredentials(proxyUser, proxyPass);
+ Credentials creds = new UsernamePasswordCredentials(proxyUser, proxyPass.toCharArray());
client.getCredentialsProvider().setCredentials(new AuthScope(proxyHost, proxyPort), creds);
}
@@ -503,16 +506,16 @@ public static void handleProxies(String protocol, DefaultHttpClient client, Stri
}
}
- public static Pair getFullResponse(Worker worker, String url, Map headers,
- String user, String pass, final int readTimeout) throws IOException {
+ public static Pair getFullResponse(Worker worker, String url,
+ Map headers, String user, String pass, final int readTimeout) throws IOException {
DURL u = new DURL(url);
if (!u.valid()) {
return null;
}
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
client.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {
@Override
- public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
+ public long getKeepAliveDuration(ClassicHttpResponse response, HttpContext context) {
long keepAlive = super.getKeepAliveDuration(response, context);
if (keepAlive == -1) {
keepAlive = readTimeout * 1000;
@@ -529,8 +532,8 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
get.addHeader(key, headers.get(key));
}
}
- HttpResponse response = client.execute(get);
- return new Pair(worker.work(response.getEntity().getContent()), response);
+ ClassicHttpResponse response = client.execute(get);
+ return new Pair(worker.work(response.getEntity().getContent()), response);
}
/**
@@ -542,11 +545,11 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
* @param url must be valid
* @return HttpClient with proxy configuration
*/
- public static DefaultHttpClient enableProxyUsage(DefaultHttpClient client, DURL url) {
+ public static CloseableHttpClient enableProxyUsage(CloseableHttpClient client, DURL url) {
HttpConnectionParams.setConnectionTimeout(client.getParams(), DEFAULT_CONN_TIMEOUT);
client.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {
@Override
- public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
+ public long getKeepAliveDuration(ClassicHttpResponse response, HttpContext context) {
long keepAlive = super.getKeepAliveDuration(response, context);
if (keepAlive == -1) {
keepAlive = DEFAULT_SOCKET_TIMEOUT;
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/pom.xml b/deegree-core/deegree-core-protocol/deegree-protocol-commons/pom.xml
index 02e9cf1fce3..3ffd9a9db22 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/pom.xml
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/pom.xml
@@ -32,6 +32,10 @@
junit
junit
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
org.mockito
mockito-core
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpClientImpl.java b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpClientImpl.java
index 49af2f708bf..759e23bda5d 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpClientImpl.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpClientImpl.java
@@ -44,13 +44,15 @@
import java.util.Map;
import java.util.Map.Entry;
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.entity.InputStreamEntity;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+/* No generic migration for classes in the `org.apache.http.params` package exists, please migrate manually */
import org.apache.http.params.HttpConnectionParams;
import org.deegree.commons.utils.io.StreamBufferStore;
import org.slf4j.Logger;
@@ -140,9 +142,9 @@ public OwsHttpResponse doGet(URL endPoint, Map params, Mapnull
*/
- public HttpResponse getAsHttpResponse();
+ public ClassicHttpResponse getAsHttpResponse();
/**
* Provides access to the response body as a binary stream.
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseImpl.java b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseImpl.java
index ebb6251c788..ed174609d4c 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseImpl.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseImpl.java
@@ -46,12 +46,11 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.conn.ClientConnectionManager;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.message.StatusLine;
+import org.apache.hc.client5.http.ClientConnectionManager;
import org.deegree.commons.ows.exception.OWSException;
import org.deegree.commons.xml.stax.XMLInputFactoryUtils;
import org.deegree.protocol.ows.exception.OWSExceptionReport;
@@ -72,7 +71,7 @@ public class OwsHttpResponseImpl implements OwsHttpResponse {
private static final XMLInputFactory xmlFac = XMLInputFactoryUtils.newSafeInstance();
- private final HttpResponse httpResponse;
+ private final ClassicHttpResponse httpResponse;
private final ClientConnectionManager connManager;
@@ -88,7 +87,7 @@ public class OwsHttpResponseImpl implements OwsHttpResponse {
* @throws IllegalStateException
* @throws IOException
*/
- OwsHttpResponseImpl(HttpResponse httpResponse, ClientConnectionManager connManager, String url)
+ OwsHttpResponseImpl(ClassicHttpResponse httpResponse, ClientConnectionManager connManager, String url)
throws IllegalStateException, IOException {
this.httpResponse = httpResponse;
this.connManager = connManager;
@@ -101,7 +100,7 @@ public class OwsHttpResponseImpl implements OwsHttpResponse {
}
@Override
- public HttpResponse getAsHttpResponse() {
+ public ClassicHttpResponse getAsHttpResponse() {
return httpResponse;
}
@@ -134,7 +133,7 @@ private void assertNoExceptionReport(XMLStreamReader xmlStream) throws OWSExcept
@Override
public void assertHttpStatus200() throws OWSExceptionReport {
- StatusLine statusLine = httpResponse.getStatusLine();
+ StatusLine statusLine = new StatusLine(httpResponse);
int statusCode = statusLine.getStatusCode();
if (statusCode != 200) {
try {
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseMock.java b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseMock.java
index 4dad253178e..4a48e4d8d28 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseMock.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsHttpResponseMock.java
@@ -43,7 +43,7 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.deegree.commons.ows.exception.OWSException;
import org.deegree.protocol.ows.exception.OWSExceptionReader;
import org.deegree.protocol.ows.exception.OWSExceptionReport;
@@ -68,7 +68,7 @@ class OwsHttpResponseMock implements OwsHttpResponse {
}
@Override
- public HttpResponse getAsHttpResponse() {
+ public ClassicHttpResponse getAsHttpResponse() {
throw new UnsupportedOperationException();
}
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsResponseHandler.java b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsResponseHandler.java
index 686447d1a44..d51fa61ef97 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsResponseHandler.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/main/java/org/deegree/protocol/ows/http/OwsResponseHandler.java
@@ -36,16 +36,15 @@
import java.io.IOException;
import java.io.InputStream;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.client5.http.ClientProtocolException;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.ResponseHandler;
-
-public class OwsResponseHandler implements ResponseHandler {
+public class OwsResponseHandler implements HttpClientResponseHandler {
@Override
- public InputStream handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
+ public InputStream handleResponse(ClassicHttpResponse response) throws ClientProtocolException, IOException {
// TODO error handling
HttpEntity entity = response.getEntity();
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/test/java/org/deegree/protocol/ows/http/OwsHttpResponseTest.java b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/test/java/org/deegree/protocol/ows/http/OwsHttpResponseTest.java
index 97fb4108865..e039294467c 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/test/java/org/deegree/protocol/ows/http/OwsHttpResponseTest.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-commons/src/test/java/org/deegree/protocol/ows/http/OwsHttpResponseTest.java
@@ -48,11 +48,10 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.conn.ClientConnectionManager;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.message.StatusLine;
+import org.apache.hc.client5.http.ClientConnectionManager;
import org.deegree.protocol.ows.exception.OWSExceptionReport;
import org.h2.util.IOUtils;
import org.junit.Before;
@@ -248,34 +247,35 @@ public void testClose() throws IOException {
private OwsHttpResponse createScenario1() throws Exception {
InputStream payload = OwsHttpResponseTest.class.getResourceAsStream(SCENARIO1_RESPONSE);
- HttpResponse httpResponse = mockHttpResponse(payload, 200);
+ ClassicHttpResponse httpResponse = mockHttpResponse(payload, 200);
return new OwsHttpResponseImpl(httpResponse, connManager, "");
}
private OwsHttpResponse createScenario2() throws Exception {
InputStream payload = OwsHttpResponseTest.class.getResourceAsStream(SCENARIO2_RESPONSE);
- HttpResponse httpResponse = mockHttpResponse(payload, 200);
+ ClassicHttpResponse httpResponse = mockHttpResponse(payload, 200);
return new OwsHttpResponseImpl(httpResponse, connManager, "");
}
private OwsHttpResponse createScenario3() throws Exception {
InputStream payload = OwsHttpResponseTest.class.getResourceAsStream(SCENARIO3_RESPONSE);
- HttpResponse httpResponse = mockHttpResponse(payload, 200);
+ ClassicHttpResponse httpResponse = mockHttpResponse(payload, 200);
return new OwsHttpResponseImpl(httpResponse, connManager, "");
}
private OwsHttpResponse createScenario4() throws Exception {
InputStream payload = new ByteArrayInputStream(new byte[0]);
- HttpResponse httpResponse = mockHttpResponse(payload, 500);
+ ClassicHttpResponse httpResponse = mockHttpResponse(payload, 500);
return new OwsHttpResponseImpl(httpResponse, connManager, "");
}
- private HttpResponse mockHttpResponse(InputStream payload, int status) throws IllegalStateException, IOException {
- HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
+ private ClassicHttpResponse mockHttpResponse(InputStream payload, int status)
+ throws IllegalStateException, IOException {
+ ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
HttpEntity mockedEntity = mockHttpEntity(payload);
Mockito.when(httpResponse.getEntity()).thenReturn(mockedEntity);
StatusLine mockedStatus = mockStatusLine(status);
- Mockito.when(httpResponse.getStatusLine()).thenReturn(mockedStatus);
+ Mockito.when(new StatusLine(httpResponse)).thenReturn(mockedStatus);
return httpResponse;
}
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-wms/pom.xml b/deegree-core/deegree-core-protocol/deegree-protocol-wms/pom.xml
index a048d1330f2..4d5900b83f8 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-wms/pom.xml
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-wms/pom.xml
@@ -51,6 +51,10 @@
junit
junit
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
org.mockito
mockito-core
diff --git a/deegree-core/deegree-core-protocol/deegree-protocol-wms/src/main/java/org/deegree/protocol/wms/client/WMSClient.java b/deegree-core/deegree-core-protocol/deegree-protocol-wms/src/main/java/org/deegree/protocol/wms/client/WMSClient.java
index e4b69a8b548..f241729e31a 100644
--- a/deegree-core/deegree-core-protocol/deegree-protocol-wms/src/main/java/org/deegree/protocol/wms/client/WMSClient.java
+++ b/deegree-core/deegree-core-protocol/deegree-protocol-wms/src/main/java/org/deegree/protocol/wms/client/WMSClient.java
@@ -78,7 +78,7 @@
import org.apache.axiom.om.OMElement;
import org.apache.commons.io.IOUtils;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
import org.deegree.commons.concurrent.Executor;
import org.deegree.commons.ows.exception.OWSException;
import org.deegree.commons.proxy.ProxySettings;
diff --git a/deegree-processproviders/deegree-processprovider-fme/pom.xml b/deegree-processproviders/deegree-processprovider-fme/pom.xml
index a6d93b25c6e..c6dc0c8ced3 100644
--- a/deegree-processproviders/deegree-processprovider-fme/pom.xml
+++ b/deegree-processproviders/deegree-processprovider-fme/pom.xml
@@ -34,6 +34,10 @@
com.jayway.jsonpath
json-path
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
\ No newline at end of file
diff --git a/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcessProviderBuilder.java b/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcessProviderBuilder.java
index 5b29b4115ea..dee8c895ff9 100644
--- a/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcessProviderBuilder.java
+++ b/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcessProviderBuilder.java
@@ -46,8 +46,9 @@
import java.util.List;
import java.util.Map;
import jakarta.xml.bind.JAXBElement;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+
import javax.xml.namespace.QName;
-import org.apache.http.HttpResponse;
import org.deegree.commons.json.JSONAdapter;
import org.deegree.commons.tom.ows.CodeType;
import org.deegree.commons.utils.Pair;
@@ -124,8 +125,8 @@ public ProcessProvider build() {
map.put("expiration", "1");
map.put("timeunit", "hour");
LOG.debug("Sending {}", tokenurl);
- Pair pair = postFullResponse(UTF8STRING, tokenurl, map, null, 0);
- if (pair.second.getStatusLine().getStatusCode() == 401) {
+ Pair pair = postFullResponse(UTF8STRING, tokenurl, map, null, 0);
+ if (pair.second.getCode() == 401) {
throw new ResourceInitException(
"Could not authenticate against token service. " + "Check username/password in configuration.");
}
diff --git a/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcesslet.java b/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcesslet.java
index a400c22acdb..b65402a2269 100755
--- a/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcesslet.java
+++ b/deegree-processproviders/deegree-processprovider-fme/src/main/java/org/deegree/services/wps/provider/fme/FMEProcesslet.java
@@ -65,8 +65,8 @@
import javax.xml.stream.XMLStreamWriter;
import org.apache.commons.io.IOUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.Header;
import org.deegree.commons.utils.Pair;
import org.deegree.commons.utils.RequestUtils;
import org.deegree.services.wps.Processlet;
@@ -141,7 +141,7 @@ private void processViaDatastreaming(ProcessletOutputs out, Map
headers.put("Authorization", "fmetoken token=" + getSecurityToken());
LOG.debug("Sending {}", url);
- Pair p = postFullResponse(STREAM, url, kvpMap, headers, 0);
+ Pair p = postFullResponse(STREAM, url, kvpMap, headers, 0);
InputStream is = p.first;
ComplexOutput output = (ComplexOutput) out.getParameter("FMEResponse");
diff --git a/deegree-services/deegree-services-commons/pom.xml b/deegree-services/deegree-services-commons/pom.xml
index b5fe71765c3..cb204d3cc5f 100644
--- a/deegree-services/deegree-services-commons/pom.xml
+++ b/deegree-services/deegree-services-commons/pom.xml
@@ -75,6 +75,10 @@
org.apache.commons
commons-fileupload2-jakarta-servlet6
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
org.slf4j
jcl-over-slf4j
diff --git a/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/controller/exception/serializer/XMLExceptionSerializer.java b/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/controller/exception/serializer/XMLExceptionSerializer.java
index 6a5fa5100e5..0eca97b7d14 100644
--- a/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/controller/exception/serializer/XMLExceptionSerializer.java
+++ b/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/controller/exception/serializer/XMLExceptionSerializer.java
@@ -35,7 +35,7 @@
package org.deegree.services.controller.exception.serializer;
-import static org.apache.http.HttpStatus.SC_NOT_FOUND;
+import static org.apache.hc.core5.http.HttpStatus.SC_NOT_FOUND;
import static org.deegree.commons.ows.exception.OWSException.NOT_FOUND;
import java.io.IOException;
diff --git a/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/ows/OWS110ExceptionReportSerializer.java b/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/ows/OWS110ExceptionReportSerializer.java
index 3efcf186a38..4b24a487cc4 100644
--- a/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/ows/OWS110ExceptionReportSerializer.java
+++ b/deegree-services/deegree-services-commons/src/main/java/org/deegree/services/ows/OWS110ExceptionReportSerializer.java
@@ -36,10 +36,10 @@
import static org.deegree.commons.ows.exception.OWSException.DUPLICATE_STORED_QUERY_ID_VALUE;
import static org.deegree.commons.ows.exception.OWSException.LOCK_HAS_EXPIRED;
-import static org.apache.http.HttpStatus.SC_BAD_REQUEST;
-import static org.apache.http.HttpStatus.SC_FORBIDDEN;
-import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
-import static org.apache.http.HttpStatus.SC_NOT_FOUND;
+import static org.apache.hc.core5.http.HttpStatus.SC_BAD_REQUEST;
+import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN;
+import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
+import static org.apache.hc.core5.http.HttpStatus.SC_NOT_FOUND;
import static org.deegree.commons.ows.exception.OWSException.NOT_FOUND;
import static org.deegree.commons.ows.exception.OWSException.NO_APPLICABLE_CODE;
import static org.deegree.commons.ows.exception.OWSException.OPERATION_PROCESSING_FAILED;
@@ -50,7 +50,7 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-import org.apache.http.HttpStatus;
+import org.apache.hc.core5.http.HttpStatus;
import org.deegree.commons.ows.exception.OWSException;
import org.deegree.commons.tom.ows.Version;
import org.deegree.services.controller.exception.serializer.XMLExceptionSerializer;
diff --git a/deegree-services/deegree-webservices/pom.xml b/deegree-services/deegree-webservices/pom.xml
index 5f3d06e440a..d32813a651f 100644
--- a/deegree-services/deegree-webservices/pom.xml
+++ b/deegree-services/deegree-webservices/pom.xml
@@ -106,6 +106,10 @@
junit
junit
+
+ org.apache.httpcomponents.client5
+ httpclient5
+
org.hamcrest
hamcrest
diff --git a/deegree-services/deegree-webservices/src/main/java/org/deegree/console/client/RequestBean.java b/deegree-services/deegree-webservices/src/main/java/org/deegree/console/client/RequestBean.java
index b4ec7f593b9..046bf0c7161 100644
--- a/deegree-services/deegree-webservices/src/main/java/org/deegree/console/client/RequestBean.java
+++ b/deegree-services/deegree-webservices/src/main/java/org/deegree/console/client/RequestBean.java
@@ -76,11 +76,12 @@
import jakarta.inject.Named;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.BoundedInputStream;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.entity.InputStreamEntity;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.deegree.client.core.utils.MessageUtils;
import org.deegree.commons.utils.net.DURL;
import org.deegree.commons.utils.net.HttpUtils;
@@ -389,11 +390,11 @@ public void sendRequest() throws UnsupportedEncodingException {
InputStream is = new ByteArrayInputStream(request.getBytes("UTF-8"));
try {
DURL u = new DURL(targetUrl);
- DefaultHttpClient client = enableProxyUsage(new DefaultHttpClient(), u);
+ CloseableHttpClient client = enableProxyUsage(HttpClients.createDefault(), u);
HttpPost post = new HttpPost(targetUrl);
post.setHeader("Content-Type", "text/xml;charset=UTF-8");
post.setEntity(new InputStreamEntity(is, -1));
- HttpResponse response = client.execute(post);
+ ClassicHttpResponse response = client.execute(post);
Header[] headers = response.getHeaders("Content-Type");
if (headers.length > 0) {
mimeType = headers[0].getValue();
diff --git a/deegree-services/deegree-webservices/src/main/java/org/deegree/console/workspace/WorkspaceBean.java b/deegree-services/deegree-webservices/src/main/java/org/deegree/console/workspace/WorkspaceBean.java
index dca81d61568..a87f3fc7fff 100644
--- a/deegree-services/deegree-webservices/src/main/java/org/deegree/console/workspace/WorkspaceBean.java
+++ b/deegree-services/deegree-webservices/src/main/java/org/deegree/console/workspace/WorkspaceBean.java
@@ -63,7 +63,7 @@
import jakarta.inject.Named;
import org.apache.commons.io.FileUtils;
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.deegree.commons.config.DeegreeWorkspace;
import org.deegree.moduleinfo.ModuleInfo;
import org.deegree.commons.utils.Pair;
@@ -253,12 +253,13 @@ private void importWorkspace(String location) {
InputStream in = null;
try {
URL url = new URL(location);
- Pair p = HttpUtils.getFullResponse(STREAM, location, null, null, null, 10);
+ Pair p = HttpUtils.getFullResponse(STREAM, location, null, null, null,
+ 10);
File root = new File(getWorkspaceRoot());
in = p.getFirst();
- if (p.second.getStatusLine().getStatusCode() != 200) {
+ if (p.second.getCode() != 200) {
throw new Exception("Download of '" + location + "' failed. Server responded with HTTP status code "
- + p.second.getStatusLine().getStatusCode());
+ + p.second.getCode());
}
String name = workspaceImportName;
if (name == null || name.isEmpty()) {
@@ -341,12 +342,12 @@ public void importWorkspace() {
public List downloadWorkspaceList(String url) {
InputStream in = null;
try {
- Pair p = HttpUtils.getFullResponse(STREAM, url, null, null, null, 10);
+ Pair p = HttpUtils.getFullResponse(STREAM, url, null, null, null, 10);
LOG.debug("Retrieving list of remote workspaces from {} ", url);
in = p.getFirst();
- if (p.second.getStatusLine().getStatusCode() != 200) {
+ if (p.second.getCode() != 200) {
LOG.warn("Could not get workspace list: Server responded with HTTP status code {}.",
- p.second.getStatusLine().getStatusCode());
+ p.second.getCode());
return new ArrayList();
}
List list = readLines(in);
diff --git a/pom.xml b/pom.xml
index 13c348634a9..d1514f9aa6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -623,9 +623,9 @@
2.0.0-M5
- org.apache.httpcomponents
- httpclient
- 4.5.14
+ org.apache.httpcomponents.client5
+ httpclient5
+ 5.4.4
commons-logging