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/12 14:27:31 UTC
[sling-whiteboard] 08/11: Launcher cleanup
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 312771a9e76fbd2fe9faa9547da0c4927c0178c0
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Jun 7 17:18:55 2019 +0200
Launcher cleanup
---
.../apache/sling/uca/impl/HttpClientLauncher.java | 73 +++++++++++++++-------
1 file changed, 51 insertions(+), 22 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..09ef81f 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
@@ -20,15 +20,15 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
+import java.util.EnumSet;
+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,34 +45,63 @@ 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 HttpConsumer consumer;
+
+ ClientType(HttpConsumer consumer) {
+ this.consumer = consumer;
+ }
+
+ public HttpConsumer 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);
+ }
+ }
+
+ /**
+ * A <tt>Consumer</tt> that allows throwing checked exceptions.</p>
+ *
+ */
+ @FunctionalInterface
+ interface HttpConsumer {
+ void accept(String http) throws Exception;
}
- public static void main(String[] args) throws MalformedURLException, IOException {
+ public static void main(String[] args) throws Exception {
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 {
+ private static void runUsingJavaNet(String targetUrl) throws IOException {
URLConnection con = new URL(targetUrl).openConnection();
System.out.println("Connection type is " + con);
@@ -86,7 +115,7 @@ public class HttpClientLauncher {
}
- private static void runUsingHttpClient3(String targetUrl) throws HttpException, IOException {
+ private static void runUsingHttpClient3(String targetUrl) throws 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));