Author: radu Date: Mon Aug 10 10:02:16 2015 New Revision: 1695008 URL: http://svn.apache.org/r1695008 Log: SLING-4936 - Enhance the Sling Script Cache to only cache scripts from the search paths
* made ScriptCacheImpl#putScript to only accept scripts from the search paths Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java?rev=1695008&r1=1695007&r2=1695008&view=diff ============================================================================== --- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java (original) +++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java Mon Aug 10 10:02:16 2015 @@ -109,6 +109,7 @@ public class ScriptCacheImpl implements private ServiceRegistration eventHandlerServiceRegistration = null; private Set<String> extensions = new HashSet<String>(); private String[] additionalExtensions = new String[]{}; + private String[] searchPaths = {}; // use a static policy so that we can reconfigure the watched script files if the search paths are changed @Reference(policy = ReferencePolicy.STATIC) @@ -141,10 +142,15 @@ public class ScriptCacheImpl implements @Override public void putScript(CachedScript script) { - SoftReference<CachedScript> reference = new SoftReference<CachedScript>(script); writeLock.lock(); try { - internalMap.put(script.getScriptPath(), reference); + for (String searchPath : searchPaths) { + if (script.getScriptPath().startsWith(searchPath)) { + SoftReference<CachedScript> reference = new SoftReference<CachedScript>(script); + internalMap.put(script.getScriptPath(), reference); + break; + } + } } finally { writeLock.unlock(); } @@ -222,6 +228,17 @@ public class ScriptCacheImpl implements newMap.putAll(internalMap); internalMap = newMap; } + ResourceResolver resolver = null; + try { + resolver = rrf.getAdministrativeResourceResolver(null); + searchPaths = resolver.getSearchPath(); + } catch (LoginException e) { + LOGGER.error("Unable to store search paths.", e); + } finally { + if (resolver != null) { + resolver.close(); + } + } configureCache(); active = true; }