You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/01/29 08:05:25 UTC
[camel] branch camel-3.14.x updated: [CAMEL-17566]add a HttpsResolver into org.apache.camel.impl.engine.DefaultResourceResolvers so RestEndpoint producer can access https url (#6849)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.14.x by this push:
new 1cac9e1 [CAMEL-17566]add a HttpsResolver into org.apache.camel.impl.engine.DefaultResourceResolvers so RestEndpoint producer can access https url (#6849)
1cac9e1 is described below
commit 1cac9e1318875c2d1cd9e5b608ed0f82cdf3aa32
Author: Freeman(Yue) Fang <fr...@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 7d451a9..9c43f18 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)