This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 080ad19852bca149255839999c21a67dd3ede0e9 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Aug 6 10:34:52 2019 +0200 CAMEL-10456: Restoring old TCCL should store old value regardless if it was null, as otherwise it can leak changing the TCCL. --- .../java/org/apache/camel/component/chunk/ChunkEndpoint.java | 4 +--- .../org/apache/camel/component/jcache/osgi/OSGiCacheManager.java | 4 +--- .../main/java/org/apache/camel/component/jms/JmsProducer.java | 6 ++---- .../org/apache/camel/component/mustache/MustacheEndpoint.java | 4 +--- .../org/apache/camel/component/rabbitmq/RabbitMQProducer.java | 4 +--- .../camel/spring/scan/DefaultPackageScanClassResolverTest.java | 9 ++------- .../src/main/java/org/apache/camel/support/ObjectHelper.java | 6 ++---- 7 files changed, 10 insertions(+), 27 deletions(-) diff --git a/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkEndpoint.java b/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkEndpoint.java index 9773a80..1a4d8cf 100644 --- a/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkEndpoint.java +++ b/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkEndpoint.java @@ -147,9 +147,7 @@ public class ChunkEndpoint extends ResourceEndpoint { return newChunk; } finally { resourceReader.close(); - if (oldcl != null) { - Thread.currentThread().setContextClassLoader(oldcl); - } + Thread.currentThread().setContextClassLoader(oldcl); } } diff --git a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/osgi/OSGiCacheManager.java b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/osgi/OSGiCacheManager.java index e6bfc9f..2641a81 100644 --- a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/osgi/OSGiCacheManager.java +++ b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/osgi/OSGiCacheManager.java @@ -56,9 +56,7 @@ public final class OSGiCacheManager<K, V> extends JCacheManager { return cache; } finally { - if (jcl != null) { - Thread.currentThread().setContextClassLoader(tccl); - } + Thread.currentThread().setContextClassLoader(tccl); } } diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java index cdf0ac2..ae532db 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java @@ -81,7 +81,7 @@ public class JmsProducer extends DefaultAsyncProducer { // must use the classloader from the application context when creating reply manager, // as it should inherit the classloader from app context and not the current which may be // a different classloader - ClassLoader current = Thread.currentThread().getContextClassLoader(); + ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); ClassLoader ac = endpoint.getCamelContext().getApplicationContextClassLoader(); try { if (ac != null) { @@ -108,9 +108,7 @@ public class JmsProducer extends DefaultAsyncProducer { } catch (Exception e) { throw new FailedToCreateProducerException(endpoint, e); } finally { - if (ac != null) { - Thread.currentThread().setContextClassLoader(current); - } + Thread.currentThread().setContextClassLoader(oldClassLoader); } started.set(true); } diff --git a/components/camel-mustache/src/main/java/org/apache/camel/component/mustache/MustacheEndpoint.java b/components/camel-mustache/src/main/java/org/apache/camel/component/mustache/MustacheEndpoint.java index 1733bf0..16cb62f 100644 --- a/components/camel-mustache/src/main/java/org/apache/camel/component/mustache/MustacheEndpoint.java +++ b/components/camel-mustache/src/main/java/org/apache/camel/component/mustache/MustacheEndpoint.java @@ -132,9 +132,7 @@ public class MustacheEndpoint extends ResourceEndpoint { return newMustache; } finally { resourceReader.close(); - if (oldcl != null) { - Thread.currentThread().setContextClassLoader(oldcl); - } + Thread.currentThread().setContextClassLoader(oldcl); } } diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQProducer.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQProducer.java index e2f066e..f59fa9b 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQProducer.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQProducer.java @@ -340,9 +340,7 @@ public class RabbitMQProducer extends DefaultAsyncProducer { } catch (Exception e) { throw new FailedToCreateProducerException(getEndpoint(), e); } finally { - if (ac != null) { - Thread.currentThread().setContextClassLoader(current); - } + Thread.currentThread().setContextClassLoader(current); } started.set(true); } diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/scan/DefaultPackageScanClassResolverTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/scan/DefaultPackageScanClassResolverTest.java index 0b1c99d..d9236fc 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/scan/DefaultPackageScanClassResolverTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/scan/DefaultPackageScanClassResolverTest.java @@ -153,7 +153,6 @@ public class DefaultPackageScanClassResolverTest extends org.apache.camel.spring URL urls[] = {new URL("jar:" + url.toString() + "!/")}; URLClassLoader classLoader = new URLClassLoader(urls, savedClassLoader); - Thread.currentThread().setContextClassLoader(classLoader); // recreate resolver since we mess with context class loader @@ -165,9 +164,7 @@ public class DefaultPackageScanClassResolverTest extends org.apache.camel.spring assertEquals(1, scanned.size()); assertEquals("class a.b.c.Test", scanned.iterator().next().toString()); } finally { - if (savedClassLoader != null) { - Thread.currentThread().setContextClassLoader(savedClassLoader); - } + Thread.currentThread().setContextClassLoader(savedClassLoader); } } @@ -193,9 +190,7 @@ public class DefaultPackageScanClassResolverTest extends org.apache.camel.spring assertEquals(1, scanned.size()); assertEquals("class a.b.c.Test", scanned.iterator().next().toString()); } finally { - if (savedClassLoader != null) { - Thread.currentThread().setContextClassLoader(savedClassLoader); - } + Thread.currentThread().setContextClassLoader(savedClassLoader); } } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java index 69b477a..fd51dcb 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java @@ -297,16 +297,14 @@ public final class ObjectHelper { * @return the result of Callable return */ public static Object callWithTCCL(Callable<?> call, ClassLoader classloader) throws Exception { - ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + final ClassLoader tccl = Thread.currentThread().getContextClassLoader(); try { if (classloader != null) { Thread.currentThread().setContextClassLoader(classloader); } return call.call(); } finally { - if (tccl != null) { - Thread.currentThread().setContextClassLoader(tccl); - } + Thread.currentThread().setContextClassLoader(tccl); } }