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);
}
}