1 16 package org.outerj.daisy.frontend; 17 18 import org.apache.avalon.framework.activity.Initializable; 19 import org.apache.avalon.framework.configuration.Configurable; 20 import org.apache.avalon.framework.configuration.Configuration; 21 import org.apache.avalon.framework.configuration.ConfigurationException; 22 import org.apache.avalon.framework.thread.ThreadSafe; 23 import org.apache.avalon.framework.logger.AbstractLogEnabled; 24 import org.apache.avalon.framework.service.ServiceManager; 25 import org.apache.avalon.framework.service.Serviceable; 26 import org.apache.avalon.framework.service.ServiceException; 27 import org.apache.cocoon.components.thread.RunnableManager; 28 29 32 public class FopImageCacheCleaner extends AbstractLogEnabled implements Initializable, Configurable, ThreadSafe, Serviceable { 33 private ServiceManager serviceManager; 34 private long interval; 35 private long initialDelay; 36 37 public void service(ServiceManager serviceManager) throws ServiceException { 38 this.serviceManager = serviceManager; 39 } 40 41 public void initialize() throws Exception { 42 RunnableManager runnableManager = (RunnableManager)serviceManager.lookup(RunnableManager.ROLE); 43 try { 44 runnableManager.execute(new CleanCacheCommand(), initialDelay, interval); 45 } finally { 46 serviceManager.release(runnableManager); 47 } 48 } 49 50 public void configure(Configuration configuration) throws ConfigurationException { 51 initialDelay = configuration.getChild("offset").getValueAsLong(); 52 interval = configuration.getChild("period").getValueAsLong(); 53 } 54 55 final class CleanCacheCommand implements Runnable { 56 public void run() { 57 getLogger().debug("Clearing FOP image cache."); 58 org.apache.fop.image.FopImageFactory.resetCache(); 59 } 60 } 61 } 62 | Popular Tags |