This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2077a971d41caaacaf45a0f86cdc791c446f5261
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Sun May 12 09:16:55 2024 +0200

    (chores) camel-http: code cleanup
    
    - break large and complex methods
---
 .../http/HttpComponentVerifierExtension.java       | 120 ++++++++++++---------
 .../apache/camel/component/http/HttpMethods.java   |  11 +-
 .../apache/camel/component/http/HttpProducer.java  |  62 ++++++-----
 3 files changed, 105 insertions(+), 88 deletions(-)

diff --git 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponentVerifierExtension.java
 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponentVerifierExtension.java
index 6db0e36c1f8..ab7e6a5ebc6 100644
--- 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponentVerifierExtension.java
+++ 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponentVerifierExtension.java
@@ -32,6 +32,8 @@ import org.apache.hc.client5.http.classic.methods.HttpGet;
 import org.apache.hc.client5.http.config.RequestConfig;
 import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
 import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
 
 final class HttpComponentVerifierExtension extends 
DefaultComponentVerifierExtension {
 
@@ -51,15 +53,7 @@ final class HttpComponentVerifierExtension extends 
DefaultComponentVerifierExten
         // Make a copy to avoid clashing with parent validation
         final HashMap<String, Object> verifyParams = new HashMap<>(parameters);
         // Check if validation is rest-related
-        final boolean isRest = 
verifyParams.entrySet().stream().anyMatch(HttpComponentVerifierExtension::isRest);
-
-        if (isRest) {
-            // Build the httpUri from rest configuration
-            verifyParams.put("httpUri", 
buildHttpUriFromRestParameters(parameters));
-
-            // Cleanup parameters map from rest related stuffs
-            
verifyParams.entrySet().removeIf(HttpComponentVerifierExtension::isRest);
-        }
+        restRelatedSetup(parameters, verifyParams);
 
         // Validate using the catalog
         super.verifyParametersAgainstCatalog(builder, verifyParams);
@@ -78,16 +72,7 @@ final class HttpComponentVerifierExtension extends 
DefaultComponentVerifierExten
                 = ResultBuilder.withStatusAndScope(Result.Status.OK, 
ComponentVerifierExtension.Scope.CONNECTIVITY);
         // Make a copy to avoid clashing with parent validation
         final HashMap<String, Object> verifyParams = new HashMap<>(parameters);
-        // Check if validation is rest-related
-        final boolean isRest = 
verifyParams.entrySet().stream().anyMatch(HttpComponentVerifierExtension::isRest);
-
-        if (isRest) {
-            // Build the httpUri from rest configuration
-            verifyParams.put("httpUri", 
buildHttpUriFromRestParameters(parameters));
-
-            // Cleanup parameters from rest related stuffs
-            
verifyParams.entrySet().removeIf(HttpComponentVerifierExtension::isRest);
-        }
+        final boolean isRest = restRelatedSetup(parameters, verifyParams);
 
         String httpUri = getOption(verifyParams, "httpUri", 
String.class).orElse(null);
         if (ObjectHelper.isEmpty(httpUri)) {
@@ -100,39 +85,7 @@ final class HttpComponentVerifierExtension extends 
DefaultComponentVerifierExten
         try (CloseableHttpClient httpclient = createHttpClient(verifyParams)) {
             httpclient.execute(
                     new HttpGet(httpUri),
-                    response -> {
-                        int code = response.getCode();
-                        String okCodes = getOption(verifyParams, 
"okStatusCodeRange", String.class).orElse("200-299");
-
-                        if (!HttpHelper.isStatusCodeOk(code, okCodes)) {
-                            if (code == 401) {
-                                // Unauthorized, add authUsername and 
authPassword to the list
-                                // of parameters in error
-                                builder.error(
-                                        ResultErrorBuilder.withHttpCode(code)
-                                                
.description(response.getReasonPhrase())
-                                                .parameterKey("authUsername")
-                                                .parameterKey("authPassword")
-                                                .build());
-                            } else if (code >= 300 && code < 400) {
-                                // redirect
-                                builder.error(
-                                        ResultErrorBuilder.withHttpCode(code)
-                                                
.description(response.getReasonPhrase())
-                                                .parameterKey("httpUri")
-                                                
.detail(VerificationError.HttpAttribute.HTTP_REDIRECT,
-                                                        () -> 
HttpUtil.responseHeaderValue(response, "location"))
-                                                .build());
-                            } else if (code >= 400) {
-                                // generic http error
-                                builder.error(
-                                        ResultErrorBuilder.withHttpCode(code)
-                                                
.description(response.getReasonPhrase())
-                                                .build());
-                            }
-                        }
-                        return null;
-                    });
+                    createObjectHttpClientResponseHandler(verifyParams, 
builder));
 
         } catch (UnknownHostException e) {
             builder.error(
@@ -146,6 +99,69 @@ final class HttpComponentVerifierExtension extends 
DefaultComponentVerifierExten
         return builder.build();
     }
 
+    private HttpClientResponseHandler<Object> 
createObjectHttpClientResponseHandler(
+            HashMap<String, Object> verifyParams, ResultBuilder builder) {
+        return response -> {
+            int code = response.getCode();
+            String okCodes = getOption(verifyParams, "okStatusCodeRange", 
String.class).orElse("200-299");
+
+            if (!HttpHelper.isStatusCodeOk(code, okCodes)) {
+                if (code == 401) {
+                    setupUnauthorizedRespose(builder, response, code);
+                } else if (code >= 300 && code < 400) {
+                    setupRedirect(builder, response, code);
+                } else if (code >= 400) {
+                    setupOtherHttpErrors(builder, response, code);
+                }
+            }
+            return null;
+        };
+    }
+
+    private static void setupOtherHttpErrors(ResultBuilder builder, 
ClassicHttpResponse response, int code) {
+        // generic http error
+        builder.error(
+                ResultErrorBuilder.withHttpCode(code)
+                        .description(response.getReasonPhrase())
+                        .build());
+    }
+
+    private static void setupRedirect(ResultBuilder builder, 
ClassicHttpResponse response, int code) {
+        // redirect
+        builder.error(
+                ResultErrorBuilder.withHttpCode(code)
+                        .description(response.getReasonPhrase())
+                        .parameterKey("httpUri")
+                        .detail(VerificationError.HttpAttribute.HTTP_REDIRECT,
+                                () -> HttpUtil.responseHeaderValue(response, 
"location"))
+                        .build());
+    }
+
+    private static void setupUnauthorizedRespose(ResultBuilder builder, 
ClassicHttpResponse response, int code) {
+        // Unauthorized, add authUsername and authPassword to the list
+        // of parameters in error
+        builder.error(
+                ResultErrorBuilder.withHttpCode(code)
+                        .description(response.getReasonPhrase())
+                        .parameterKey("authUsername")
+                        .parameterKey("authPassword")
+                        .build());
+    }
+
+    private boolean restRelatedSetup(Map<String, Object> parameters, 
HashMap<String, Object> verifyParams) {
+        // Check if validation is rest-related
+        final boolean isRest = 
verifyParams.entrySet().stream().anyMatch(HttpComponentVerifierExtension::isRest);
+
+        if (isRest) {
+            // Build the httpUri from rest configuration
+            verifyParams.put("httpUri", 
buildHttpUriFromRestParameters(parameters));
+
+            // Cleanup parameters from rest related stuffs
+            
verifyParams.entrySet().removeIf(HttpComponentVerifierExtension::isRest);
+        }
+        return isRest;
+    }
+
     private static boolean isRest(Map.Entry<String, Object> e) {
         return e.getKey().startsWith("rest.");
     }
diff --git 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
index b2f847d0136..efda890b7ac 100644
--- 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
+++ 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
@@ -49,16 +49,7 @@ public enum HttpMethods implements Expression {
     }
 
     public HttpUriRequest createMethod(final String url) {
-        return switch (this) {
-            case GET -> new HttpGet(url);
-            case PATCH -> new HttpPatch(url);
-            case POST -> new HttpPost(url);
-            case PUT -> new HttpPut(url);
-            case DELETE -> new HttpDelete(url);
-            case HEAD -> new HttpHead(url);
-            case OPTIONS -> new HttpOptions(url);
-            case TRACE -> new HttpTrace(url);
-        };
+        return createMethod(URI.create(url));
     }
 
     public HttpUriRequest createMethod(final URI uri) {
diff --git 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
index 4bd16f77a21..78e6b4aedd0 100644
--- 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
+++ 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
@@ -348,17 +348,7 @@ public class HttpProducer extends DefaultProducer {
             throws IOException, ClassNotFoundException {
         // We just make the out message is not create when extractResponseBody 
throws exception
         Object response = extractResponseBody(httpResponse, exchange, 
getEndpoint().isIgnoreResponseBody());
-        Message answer = exchange.getOut();
-
-        // optimize for 200 response code as the boxing is outside the cached 
integers
-        if (responseCode == 200) {
-            answer.setHeader(HttpConstants.HTTP_RESPONSE_CODE, 
OK_RESPONSE_CODE);
-        } else {
-            answer.setHeader(HttpConstants.HTTP_RESPONSE_CODE, responseCode);
-        }
-        if (httpResponse.getReasonPhrase() != null) {
-            answer.setHeader(HttpConstants.HTTP_RESPONSE_TEXT, 
httpResponse.getReasonPhrase());
-        }
+        final Message answer = createResponseMessage(exchange, httpResponse, 
responseCode);
         answer.setBody(response);
 
         if (!getEndpoint().isSkipResponseHeaders()) {
@@ -409,6 +399,21 @@ public class HttpProducer extends DefaultProducer {
         }
     }
 
+    private static Message createResponseMessage(Exchange exchange, 
ClassicHttpResponse httpResponse, int responseCode) {
+        Message answer = exchange.getOut();
+
+        // optimize for 200 response code as the boxing is outside the cached 
integers
+        if (responseCode == 200) {
+            answer.setHeader(HttpConstants.HTTP_RESPONSE_CODE, 
OK_RESPONSE_CODE);
+        } else {
+            answer.setHeader(HttpConstants.HTTP_RESPONSE_CODE, responseCode);
+        }
+        if (httpResponse.getReasonPhrase() != null) {
+            answer.setHeader(HttpConstants.HTTP_RESPONSE_TEXT, 
httpResponse.getReasonPhrase());
+        }
+        return answer;
+    }
+
     protected Exception populateHttpOperationFailedException(
             Exchange exchange, HttpUriRequest httpRequest, ClassicHttpResponse 
httpResponse, int responseCode)
             throws IOException, ClassNotFoundException {
@@ -624,21 +629,7 @@ public class HttpProducer extends DefaultProducer {
         // the exchange can have some headers that override the default url 
and forces to create
         // a new url that is dynamic based on header values
         // these checks are checks that is done in HttpHelper.createURL and 
HttpHelper.createURI methods
-        boolean create = false;
-        Message in = exchange.getIn();
-        if (in.getHeader(HttpConstants.REST_HTTP_URI) != null) {
-            create = true;
-        } else if (in.getHeader(HttpConstants.HTTP_URI) != null && 
!getEndpoint().isBridgeEndpoint()) {
-            create = true;
-        } else if (in.getHeader(HttpConstants.HTTP_PATH) != null) {
-            create = true;
-        } else if (in.getHeader(HttpConstants.REST_HTTP_QUERY) != null) {
-            create = true;
-        } else if (in.getHeader(HttpConstants.HTTP_RAW_QUERY) != null) {
-            create = true;
-        } else if (in.getHeader(HttpConstants.HTTP_QUERY) != null) {
-            create = true;
-        }
+        final boolean create = isCreateNewURL(exchange);
 
         if (create) {
             // creating the url to use takes 2-steps
@@ -679,6 +670,25 @@ public class HttpProducer extends DefaultProducer {
         return method;
     }
 
+    private boolean isCreateNewURL(Exchange exchange) {
+        boolean create = false;
+        Message in = exchange.getIn();
+        if (in.getHeader(HttpConstants.REST_HTTP_URI) != null) {
+            create = true;
+        } else if (in.getHeader(HttpConstants.HTTP_URI) != null && 
!getEndpoint().isBridgeEndpoint()) {
+            create = true;
+        } else if (in.getHeader(HttpConstants.HTTP_PATH) != null) {
+            create = true;
+        } else if (in.getHeader(HttpConstants.REST_HTTP_QUERY) != null) {
+            create = true;
+        } else if (in.getHeader(HttpConstants.HTTP_RAW_QUERY) != null) {
+            create = true;
+        } else if (in.getHeader(HttpConstants.HTTP_QUERY) != null) {
+            create = true;
+        }
+        return create;
+    }
+
     /**
      * Creates a holder object for the data to send to the remote server.
      *

Reply via email to