You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2019/06/07 15:19:28 UTC
[sling-whiteboard] 07/07: Launcher cleanup
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch url-connection-agent-cleanups
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit e3688776c1f55b825d2a700adb752cc41a8aa574
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Jun 7 17:18:55 2019 +0200
Launcher cleanup
---
.../apache/sling/uca/impl/HttpClientLauncher.java | 164 +++++++++++++--------
1 file changed, 99 insertions(+), 65 deletions(-)
diff --git a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/HttpClientLauncher.java b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/HttpClientLauncher.java
index 9d8ca73..bce7dda 100644
--- a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/HttpClientLauncher.java
+++ b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/HttpClientLauncher.java
@@ -24,11 +24,13 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
+import java.util.EnumSet;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
@@ -45,92 +47,124 @@ import org.apache.http.util.EntityUtils;
*/
public class HttpClientLauncher {
- // TODO - write help messages with the values from this enum
public enum ClientType {
- JavaNet, HC3, HC4
+ JavaNet(HttpClientLauncher::runUsingJavaNet),
+ HC3(HttpClientLauncher::runUsingHttpClient3),
+ HC4(HttpClientLauncher::runUsingHttpClient4);
+
+ private final Consumer<String> consumer;
+
+ ClientType(Consumer<String> consumer) {
+ this.consumer = consumer;
+ }
+
+ public Consumer<String> getConsumer() {
+ return consumer;
+ }
+
+ static String pipeSeparatedString() {
+ return EnumSet.allOf(ClientType.class).stream()
+ .map(ClientType::toString)
+ .collect(Collectors.joining("|"));
+ }
+
+ static ClientType fromString(String value) {
+ return EnumSet.allOf(ClientType.class).stream()
+ .filter( e -> e.toString().equals(value) )
+ .findFirst()
+ .orElse(null);
+ }
}
public static void main(String[] args) throws MalformedURLException, IOException {
if ( args.length != 2 )
- throw new IllegalArgumentException("Usage: java -cp ... " + HttpClientLauncher.class.getName() + " <URL> JavaNet|HC3|HC4");
+ throw new IllegalArgumentException(usage());
+
+ ClientType type = ClientType.fromString(args[1]);
+ if ( type == null )
+ throw new IllegalArgumentException(usage());
- System.out.println(new Date() + " [WEB] Executing request via " + args[1]);
+ System.out.println("[WEB] Executing request via " + type);
+
+ type.consumer.accept(args[0]);
+ }
- switch ( args[1] ) {
- case "JavaNet":
- runUsingJavaNet(args[0]);
- break;
- case "HC3":
- runUsingHttpClient3(args[0]);
- break;
- case "HC4":
- runUsingHttpClient4(args[0]);
- break;
- default:
- throw new IllegalArgumentException("Usage: java -cp ... " + HttpClientLauncher.class.getName() + " <URL> JavaNet|HC3|HC4");
- }
+ private static String usage() {
+ return "Usage: java -cp ... " + HttpClientLauncher.class.getName() + " <URL> " + ClientType.pipeSeparatedString();
}
- private static void runUsingJavaNet(String targetUrl) throws MalformedURLException, IOException {
- URLConnection con = new URL(targetUrl).openConnection();
- System.out.println("Connection type is " + con);
-
- try (InputStream in = con.getInputStream();
- InputStreamReader isr = new InputStreamReader(in);
- BufferedReader br = new BufferedReader(isr)) {
- String line;
- while ( (line = br.readLine()) != null )
- System.out.println("[WEB] " + line);
+ private static void runUsingJavaNet(String targetUrl) {
+ try {
+ URLConnection con = new URL(targetUrl).openConnection();
+ System.out.println("Connection type is " + con);
+
+ try (InputStream in = con.getInputStream();
+ InputStreamReader isr = new InputStreamReader(in);
+ BufferedReader br = new BufferedReader(isr)) {
+ String line;
+ while ( (line = br.readLine()) != null )
+ System.out.println("[WEB] " + line);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
- private static void runUsingHttpClient3(String targetUrl) throws HttpException, IOException {
- HttpClient client = new HttpClient();
- // disable retries, to make sure that we get equivalent behaviour with other implementations
- client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
- HttpMethod get = new GetMethod(targetUrl);
- System.out.format("Connection timeouts: connect: %d, so: %s%n",
- client.getHttpConnectionManager().getParams().getConnectionTimeout(),
- client.getHttpConnectionManager().getParams().getSoTimeout());
- System.out.format("Client so timeout: %d (raw: %s) %n", client.getParams().getSoTimeout(),
- client.getParams().getParameter(HttpClientParams.SO_TIMEOUT));
- client.executeMethod(get);
-
- System.out.println(new Date() + " [WEB] " + get.getStatusLine());
-
- for ( Header header : get.getResponseHeaders() )
- System.out.print(new Date() + " [WEB] " + header.toExternalForm());
-
-
- try (InputStream in = get.getResponseBodyAsStream()) {
- if (in != null) {
- try (InputStreamReader isr = new InputStreamReader(in);
- BufferedReader br = new BufferedReader(isr)) {
- String line;
- while ((line = br.readLine()) != null)
- System.out.println(new Date() + " [WEB] " + line);
+ private static void runUsingHttpClient3(String targetUrl) {
+ try {
+ HttpClient client = new HttpClient();
+ // disable retries, to make sure that we get equivalent behaviour with other implementations
+ client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
+ HttpMethod get = new GetMethod(targetUrl);
+ System.out.format("Connection timeouts: connect: %d, so: %s%n",
+ client.getHttpConnectionManager().getParams().getConnectionTimeout(),
+ client.getHttpConnectionManager().getParams().getSoTimeout());
+ System.out.format("Client so timeout: %d (raw: %s) %n", client.getParams().getSoTimeout(),
+ client.getParams().getParameter(HttpClientParams.SO_TIMEOUT));
+ client.executeMethod(get);
+
+ System.out.println(new Date() + " [WEB] " + get.getStatusLine());
+
+ for ( Header header : get.getResponseHeaders() )
+ System.out.print(new Date() + " [WEB] " + header.toExternalForm());
+
+
+ try (InputStream in = get.getResponseBodyAsStream()) {
+ if (in != null) {
+ try (InputStreamReader isr = new InputStreamReader(in);
+ BufferedReader br = new BufferedReader(isr)) {
+ String line;
+ while ((line = br.readLine()) != null)
+ System.out.println(new Date() + " [WEB] " + line);
+ }
}
}
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
- private static void runUsingHttpClient4(String targetUrl) throws IOException {
- // disable retries, to make sure that we get equivalent behaviour with other implementations
- try ( CloseableHttpClient client = HttpClients.custom().disableAutomaticRetries().build() ) {
- HttpGet get = new HttpGet(targetUrl);
- try ( CloseableHttpResponse response = client.execute(get)) {
- System.out.println("[WEB] " + response.getStatusLine());
- for ( org.apache.http.Header header : response.getAllHeaders() )
- System.out.println("[WEB] " + header);
+ private static void runUsingHttpClient4(String targetUrl) {
+ try {
+ // disable retries, to make sure that we get equivalent behaviour with other implementations
+ try ( CloseableHttpClient client = HttpClients.custom().disableAutomaticRetries().build() ) {
+ HttpGet get = new HttpGet(targetUrl);
+ try ( CloseableHttpResponse response = client.execute(get)) {
+ System.out.println("[WEB] " + response.getStatusLine());
+ for ( org.apache.http.Header header : response.getAllHeaders() )
+ System.out.println("[WEB] " + header);
+
+ HttpEntity entity = response.getEntity();
+ // TODO - print response body
+ EntityUtils.consume(entity);
+ }
- HttpEntity entity = response.getEntity();
- // TODO - print response body
- EntityUtils.consume(entity);
}
-
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}