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));