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:01:51 UTC
[camel] branch main 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 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 <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 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)