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 2019/08/06 09:02:56 UTC

[camel] 02/02: CAMEL-10456: Restoring old TCCL should store old value regardless if it was null, as otherwise it can leak changing the TCCL.

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 <cl...@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);
         }
     }