SLING-12057: Replace commons.threads with Executor and embed commons.compiler.source
diff --git a/bnd.bnd b/bnd.bnd
index 80c64c7..20f9145 100644
--- a/bnd.bnd
+++ b/bnd.bnd
@@ -3,7 +3,7 @@
*
Conditional-Package:\
- org.apache.felix.utils.json.*
+ org.apache.felix.utils.json.*,org.apache.sling.commons.compiler.source.*
-exportcontents: ${packages;VERSIONED}
diff --git a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
index 579e11f..ae93f4a 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
@@ -27,6 +27,9 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -39,8 +42,6 @@
import org.apache.sling.api.resource.observation.ResourceChange;
import org.apache.sling.api.resource.observation.ResourceChange.ChangeType;
import org.apache.sling.api.resource.observation.ResourceChangeListener;
-import org.apache.sling.commons.threads.ThreadPool;
-import org.apache.sling.commons.threads.ThreadPoolManager;
import org.apache.sling.scripting.api.CachedScript;
import org.apache.sling.scripting.api.ScriptCache;
import org.apache.sling.scripting.core.impl.helper.CachingMap;
@@ -91,13 +92,11 @@
@Reference
private ResourceResolverFactory rrf;
- @Reference
- private ThreadPoolManager threadPoolManager;
@Reference
private SlingScriptEngineManager slingScriptEngineManager;
- private ThreadPool threadPool;
+ private volatile ExecutorService threadPool;
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
private final Lock readLock = rwl.readLock();
private final Lock writeLock = rwl.writeLock();
@@ -201,7 +200,7 @@
@Activate
protected void activate(ScriptCacheImplConfiguration configuration, BundleContext bundleCtx) {
- threadPool = threadPoolManager.get("Script Cache Thread Pool");
+ threadPool = Executors.newSingleThreadExecutor();
bundleContext = bundleCtx;
additionalExtensions = configuration.org_apache_sling_scripting_cache_additional__extensions();
int newMaxCacheSize = configuration.org_apache_sling_scripting_cache_size();
@@ -260,7 +259,12 @@
resourceChangeListener = null;
}
if (threadPool != null) {
- threadPoolManager.release(threadPool);
+ threadPool.shutdown();
+ try {
+ threadPool.awaitTermination(1, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ logger.warn("Unable to shutdown script cache thread in time");
+ }
threadPool = null;
}
active = false;