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/11/01 07:25:07 UTC

[camel] branch main updated: Camel 18665 (#8647)

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 2d1a56c2282 Camel 18665 (#8647)
2d1a56c2282 is described below

commit 2d1a56c2282229478f812eb7f573479428d128d3
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Nov 1 08:24:58 2022 +0100

    Camel 18665 (#8647)
    
    * CAMEL-18665: camel-core: JsseParameters should use the camel provided resource loader instead of its own
    
    * CAMEL-18665: camel-core: JsseParameters should use the camel provided resource loader instead of its own
---
 .../java/org/apache/camel/spi/ResourceLoader.java  |  1 +
 .../apache/camel/support/jsse/JsseParameters.java  | 90 +++-------------------
 .../support/jsse/KeyManagersParametersTest.java    |  5 +-
 .../camel/support/jsse/KeyStoreParametersTest.java |  8 +-
 .../support/jsse/TrustManagersParametersTest.java  |  4 +-
 5 files changed, 25 insertions(+), 83 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ResourceLoader.java b/core/camel-api/src/main/java/org/apache/camel/spi/ResourceLoader.java
index 5f96beb161e..103ec2c4462 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/ResourceLoader.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ResourceLoader.java
@@ -22,6 +22,7 @@ import org.apache.camel.CamelContextAware;
  * SPI for loading resources.
  */
 public interface ResourceLoader extends CamelContextAware {
+
     /**
      * Service factory key.
      */
diff --git a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
index 6d7ba7724f7..ff3bb669ff7 100644
--- a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
+++ b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
@@ -16,28 +16,25 @@
  */
 package org.apache.camel.support.jsse;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.ClassResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.spi.Resource;
+import org.apache.camel.spi.ResourceLoader;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * Base class that provides optional integration with core Camel capabilities.
  */
 public class JsseParameters implements CamelContextAware {
 
-    private static final Logger LOG = LoggerFactory.getLogger(JsseParameters.class);
-
     private CamelContext context;
 
     /**
@@ -106,90 +103,23 @@ public class JsseParameters implements CamelContextAware {
     }
 
     /**
-     * Attempts to loads a resource using a number of different approaches. The loading of the resource, is attempted by
+     * Attempts to load a resource using a number of different approaches. The loading of the resource, is attempted by
      * treating the resource as a file path, a class path resource, a URL, and using the Camel Context's
-     * {@link ClassResolver} if a context is available in that order. An exception is thrown if the resource cannot be
+     * {@link ResourceLoader} if a context is available in that order. An exception is thrown if the resource cannot be
      * resolved to readable input stream using any of the above methods.
      * 
      * @param  resource    the resource location
      * @return             the input stream for the resource
-     *
      * @throws IOException if the resource cannot be resolved using any of the above methods
-     * 
-     * @see                #setCamelContext(CamelContext)
      */
     protected InputStream resolveResource(String resource) throws IOException {
-        InputStream is = null;
-
-        // attempt as plain file first
-        try {
-            LOG.trace("Trying to open resource [{}] as a file.", resource);
-            is = new FileInputStream(resource);
-            LOG.debug("Opened resource [{}] as a file.", resource);
-        } catch (FileNotFoundException e) {
-            LOG.trace("Could not open resource [{}] as a file.", resource, e);
-        }
-
-        // then prefer to use ClassResolver from CamelContext if possible
-        if (is == null && this.context != null) {
-            LOG.trace("Trying to open resource using the CamelContext ClassResolver [{}].", context.getClassResolver());
-            try {
-                is = context.getClassResolver().loadResourceAsStream(resource);
-                if (is == null) {
-                    LOG.trace("Could not to open resource [{}] using the CamelContext ClassResolver [{}].",
-                            resource, context.getClassResolver());
-                } else {
-                    LOG.debug("Opened resource [{}] using the CamelContext ClassResolver [{}].",
-                            resource, this.getClass().getClassLoader());
-                }
-            } catch (Throwable e) {
-                LOG.trace("Could not open resource [{}]  using the CamelContext ClassResolver.", resource, e);
-            }
-        }
-
-        if (is == null && Thread.currentThread().getContextClassLoader() != null) {
-            LOG.trace("Trying to open resource [{}] as a class path resource with the TCCL [{}].",
-                    resource, Thread.currentThread().getContextClassLoader());
-            is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
-
-            if (is == null) {
-                LOG.trace("Could not open resource [{}] as a class path resource using the TCCL [{}].",
-                        resource, Thread.currentThread().getContextClassLoader());
-            } else {
-                LOG.debug("Opened resource [{}] as a class path resource with the TCCL [{}].",
-                        resource, Thread.currentThread().getContextClassLoader());
-            }
-        }
-
-        if (is == null) {
-            LOG.trace("Trying to open resource [{}] as a class path resource using the classloader [{}].",
-                    resource, this.getClass().getClassLoader());
-            is = this.getClass().getResourceAsStream(resource);
-
-            if (is == null) {
-                LOG.trace("Could not open resource [{}] as a class path resource using the classloader [{}].",
-                        resource, this.getClass().getClassLoader());
-            } else {
-                LOG.debug("Opened resource [{}] as a class path resource with the classloader [{}].",
-                        resource, this.getClass().getClassLoader());
-            }
-        }
+        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
 
-        if (is == null) {
-            try {
-                LOG.trace("Trying to open resource [{}] as a URL.", resource);
-                is = new URL(resource).openStream();
-                LOG.debug("Opened resource [{}] as a URL.", resource);
-            } catch (IOException e) {
-                LOG.trace("Could not open resource [{}] as a URL.", resource, e);
-            }
-        }
-
-        if (is == null) {
+        Resource res = getCamelContext().adapt(ExtendedCamelContext.class).getResourceLoader().resolveResource(resource);
+        if (res == null) {
             throw new IOException("Could not open " + resource + " as a file, class path resource, or URL.");
         }
-
-        return is;
+        return res.getInputStream();
     }
 
 }
diff --git a/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyManagersParametersTest.java b/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyManagersParametersTest.java
index 22f124a53c1..6187b4b6396 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyManagersParametersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyManagersParametersTest.java
@@ -25,6 +25,7 @@ import javax.net.ssl.KeyManagerFactory;
 import javax.net.ssl.X509KeyManager;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -33,6 +34,7 @@ public class KeyManagersParametersTest extends AbstractJsseParametersTest {
 
     protected KeyStoreParameters createMinimalKeyStoreParameters() {
         KeyStoreParameters ksp = new KeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
 
         ksp.setResource("org/apache/camel/support/jsse/localhost.p12");
         ksp.setPassword("changeit");
@@ -43,6 +45,8 @@ public class KeyManagersParametersTest extends AbstractJsseParametersTest {
 
     protected KeyManagersParameters createMinimalKeyManagersParameters() {
         KeyManagersParameters kmp = new KeyManagersParameters();
+        kmp.setCamelContext(new DefaultCamelContext());
+
         kmp.setKeyStore(this.createMinimalKeyStoreParameters());
         kmp.setKeyPassword("changeit");
 
@@ -51,7 +55,6 @@ public class KeyManagersParametersTest extends AbstractJsseParametersTest {
 
     @Test
     public void testPropertyPlaceholders() throws Exception {
-
         CamelContext context = this.createPropertiesPlaceholderAwareContext();
 
         KeyStoreParameters ksp = new KeyStoreParameters();
diff --git a/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyStoreParametersTest.java b/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyStoreParametersTest.java
index 03ea54850cb..33f79aaabca 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyStoreParametersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/jsse/KeyStoreParametersTest.java
@@ -26,6 +26,7 @@ import java.security.KeyStoreException;
 import java.security.NoSuchProviderException;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -62,6 +63,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
     @Test
     public void testValidParameters() throws GeneralSecurityException, IOException, URISyntaxException {
         KeyStoreParameters ksp = this.createMinimalKeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
 
         KeyStore ks = ksp.createKeyStore();
         assertNotNull(ks.getCertificate("localhost"));
@@ -73,7 +75,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
 
         resourceUrl = this.getClass().getResource("/org/apache/camel/support/jsse/localhost.p12");
         File file = new File(resourceUrl.toURI());
-        ksp.setResource(file.getAbsolutePath());
+        ksp.setResource("file:" + file.getAbsolutePath());
         ks = ksp.createKeyStore();
         assertNotNull(ks.getCertificate("localhost"));
     }
@@ -81,6 +83,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
     @Test
     public void testExplicitType() throws Exception {
         KeyStoreParameters ksp = this.createMinimalKeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
         ksp.setType("jks");
 
         KeyStore ks = ksp.createKeyStore();
@@ -90,6 +93,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
     @Test
     public void testExplicitProvider() throws Exception {
         KeyStoreParameters ksp = this.createMinimalKeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
         ksp.setProvider(ksp.createKeyStore().getProvider().getName());
 
         KeyStore ks = ksp.createKeyStore();
@@ -140,6 +144,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
     @Test
     public void testIncorrectPassword() throws Exception {
         KeyStoreParameters ksp = this.createMinimalKeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
         ksp.setPassword("");
 
         try {
@@ -153,6 +158,7 @@ public class KeyStoreParametersTest extends AbstractJsseParametersTest {
     @Test
     public void testIncorrectResource() throws Exception {
         KeyStoreParameters ksp = this.createMinimalKeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
         ksp.setResource("");
 
         try {
diff --git a/core/camel-core/src/test/java/org/apache/camel/support/jsse/TrustManagersParametersTest.java b/core/camel-core/src/test/java/org/apache/camel/support/jsse/TrustManagersParametersTest.java
index d97965ac572..4e7e0e4982b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/jsse/TrustManagersParametersTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/jsse/TrustManagersParametersTest.java
@@ -25,6 +25,7 @@ import javax.net.ssl.TrustManagerFactory;
 import javax.net.ssl.X509TrustManager;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -33,6 +34,7 @@ public class TrustManagersParametersTest extends AbstractJsseParametersTest {
 
     protected KeyStoreParameters createMinimalKeyStoreParameters() {
         KeyStoreParameters ksp = new KeyStoreParameters();
+        ksp.setCamelContext(new DefaultCamelContext());
 
         ksp.setResource("org/apache/camel/support/jsse/localhost.p12");
         ksp.setPassword("changeit");
@@ -42,8 +44,8 @@ public class TrustManagersParametersTest extends AbstractJsseParametersTest {
 
     protected TrustManagersParameters createMinimalTrustManagersParameters() {
         TrustManagersParameters tmp = new TrustManagersParameters();
+        tmp.setCamelContext(new DefaultCamelContext());
         tmp.setKeyStore(this.createMinimalKeyStoreParameters());
-
         return tmp;
     }