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