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

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


The following commit(s) were added to refs/heads/main by this push:
     new 6d047a0  [CAMEL-17566]add a HttpsResolver into 
org.apache.camel.impl.engine.DefaultResourceResolvers so RestEndpoint producer 
can access https url (#6849)
6d047a0 is described below

commit 6d047a005715d7272647da61d0279d813ae4af02
Author: Freeman(Yue) Fang <freeman.f...@gmail.com>
AuthorDate: Sat Jan 29 03:00:59 2022 -0500

    [CAMEL-17566]add a HttpsResolver into 
org.apache.camel.impl.engine.DefaultResourceResolvers so RestEndpoint producer 
can access https url (#6849)
---
 .../org/apache/camel/resource-resolver/https       |  2 +
 .../impl/engine/DefaultResourceResolvers.java      | 59 ++++++++++++++++++++++
 2 files changed, 61 insertions(+)

diff --git 
a/core/camel-base-engine/src/generated/resources/META-INF/services/org/apache/camel/resource-resolver/https
 
b/core/camel-base-engine/src/generated/resources/META-INF/services/org/apache/camel/resource-resolver/https
new file mode 100644
index 0000000..ea3aeeb
--- /dev/null
+++ 
b/core/camel-base-engine/src/generated/resources/META-INF/services/org/apache/camel/resource-resolver/https
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.impl.engine.DefaultResourceResolvers$HttpsResolver
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultResourceResolvers.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultResourceResolvers.java
index 21ec8fe..feffef7 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultResourceResolvers.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultResourceResolvers.java
@@ -32,6 +32,8 @@ import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.zip.GZIPInputStream;
 
+import javax.net.ssl.HttpsURLConnection;
+
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.ResourceResolver;
@@ -155,6 +157,63 @@ public final class DefaultResourceResolvers {
     }
 
     /**
+     * An implementation of the {@link ResourceResolver} that resolves a 
{@link Resource} from https.
+     */
+    @ResourceResolver(HttpsResolver.SCHEME)
+    public static class HttpsResolver extends ResourceResolverSupport {
+        public static final String SCHEME = "https";
+
+        public HttpsResolver() {
+            super(SCHEME);
+        }
+
+        @Override
+        public Resource createResource(String location, String remaining) {
+            return new ResourceSupport(SCHEME, location) {
+                @Override
+                public boolean exists() {
+                    URLConnection connection = null;
+
+                    try {
+                        connection = new URL(location).openConnection();
+
+                        if (connection instanceof HttpsURLConnection) {
+                            return ((HttpsURLConnection) 
connection).getResponseCode() == HttpURLConnection.HTTP_OK;
+                        }
+
+                        return connection.getContentLengthLong() > 0;
+                    } catch (IOException e) {
+                        throw new IllegalArgumentException(e);
+                    } finally {
+                        // close the http connection to avoid
+                        // leaking gaps in case of an exception
+                        if (connection instanceof HttpsURLConnection) {
+                            ((HttpsURLConnection) connection).disconnect();
+                        }
+                    }
+                }
+
+                @Override
+                public InputStream getInputStream() throws IOException {
+                    URLConnection con = new URL(location).openConnection();
+                    con.setUseCaches(false);
+
+                    try {
+                        return con.getInputStream();
+                    } catch (IOException e) {
+                        // close the http connection to avoid
+                        // leaking gaps in case of an exception
+                        if (con instanceof HttpsURLConnection) {
+                            ((HttpsURLConnection) con).disconnect();
+                        }
+                        throw e;
+                    }
+                }
+            };
+        }
+    }
+
+    /**
      * An implementation of the {@link ResourceResolver} that resolves a 
{@link Resource} from the classpath.
      */
     @ResourceResolver(ClasspathResolver.SCHEME)

Reply via email to