@Override public Resource getResource(String path) throws IOException { for(ResourceManager d : delegates) { Resource res = d.getResource(path); if(res != null) { return res; } } return null; }
@Override public void registerResourceChangeListener(ResourceChangeListener listener) { for(ResourceManager del : delegates) { if(del.isResourceChangeListenerSupported()) { del.registerResourceChangeListener(listener); } } }
@Override public void removeResourceChangeListener(ResourceChangeListener listener) { for(ResourceManager del : delegates) { if(del.isResourceChangeListenerSupported()) { del.removeResourceChangeListener(listener); } } }
@Override public void removeResourceChangeListener(ResourceChangeListener listener) { underlyingResourceManager.removeResourceChangeListener(listener); }
@Override public boolean isResourceChangeListenerSupported() { return underlyingResourceManager.isResourceChangeListenerSupported(); }
@Override public void registerResourceChangeListener(ResourceChangeListener listener) { underlyingResourceManager.registerResourceChangeListener(listener); }
@Override public void close() throws IOException { for (ResourceManager resourceManager : this.resourceManagers) { resourceManager.close(); } }
@Override public void removeResourceChangeListener(ResourceChangeListener listener) { this.delegate.removeResourceChangeListener(listener); }
@Override public boolean isResourceChangeListenerSupported() { return this.delegate.isResourceChangeListenerSupported(); }
@Override public void registerResourceChangeListener(ResourceChangeListener listener) { this.delegate.registerResourceChangeListener(listener); }
@Override public void close() throws IOException { this.delegate.close(); }
@Override public Resource getResource(HttpServerExchange exchange, String path) throws IOException { return resourceManager.getResource(path); } }
@Override public void registerResourceChangeListener(ResourceChangeListener listener) { if(explodedDeployment && deploymentResourceManager.isResourceChangeListenerSupported()) { deploymentResourceManager.registerResourceChangeListener(listener); } for(ResourceManager external : externalOverlays) { if(external.isResourceChangeListenerSupported()) { external.registerResourceChangeListener(listener); } } }
@Override public void removeResourceChangeListener(ResourceChangeListener listener) { if(deploymentResourceManager.isResourceChangeListenerSupported()) { deploymentResourceManager.removeResourceChangeListener(listener); } for(ResourceManager external : externalOverlays) { if(external.isResourceChangeListenerSupported()) { external.removeResourceChangeListener(listener); } } }
@Override public void removeResourceChangeListener(ResourceChangeListener listener) { for (ResourceManager resourceManager : resourceManagers) { resourceManager.removeResourceChangeListener(listener); } }
public boolean isResourceChangeListenerSupported() { for (ResourceManager manager : managers) { if (manager.isResourceChangeListenerSupported()) return true; } return false; }
@Override public void registerResourceChangeListener(ResourceChangeListener listener) { underlyingResourceManager.registerResourceChangeListener(listener); }
@Override public void close() throws IOException { try { //clear all cached data on close if(dataCache != null) { Set<Object> keys = dataCache.getAllKeys(); for(final Object key : keys) { if(key instanceof CachedResource.CacheKey) { if(((CachedResource.CacheKey) key).manager == this) { dataCache.remove(key); } } } } } finally { underlyingResourceManager.close(); } }
@Override public Resource getResource(String path) throws IOException { for (ResourceManager resourceManager : this.resourceManagers) { Resource resource = resourceManager.getResource(path); if (resource != null) { return resource; } } return null; }
public CachingResourceManager(final int metadataCacheSize, final long maxFileSize, final DirectBufferCache dataCache, final ResourceManager underlyingResourceManager, final int maxAge) { this.maxFileSize = maxFileSize; this.underlyingResourceManager = underlyingResourceManager; this.dataCache = dataCache; this.cache = new LRUCache<>(metadataCacheSize, maxAge); this.maxAge = maxAge; if(underlyingResourceManager.isResourceChangeListenerSupported()) { try { underlyingResourceManager.registerResourceChangeListener(new ResourceChangeListener() { @Override public void handleChanges(Collection<ResourceChangeEvent> changes) { for(ResourceChangeEvent change : changes) { invalidate(change.getResource()); } } }); } catch (Exception e) { UndertowLogger.ROOT_LOGGER.couldNotRegisterChangeListener(e); } } }