1 33 34 package com.icesoft.faces.async.render; 35 36 import edu.emory.mathcs.backport.java.util.concurrent.ScheduledExecutorService; 37 import edu.emory.mathcs.backport.java.util.concurrent.ScheduledFuture; 38 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit; 39 import org.apache.commons.logging.Log; 40 import org.apache.commons.logging.LogFactory; 41 42 52 public class DelayRenderer extends OnDemandRenderer implements Runnable { 53 54 private static Log log = LogFactory.getLog(IntervalRenderer.class); 55 private ScheduledFuture future; 56 57 60 private long delay = 60000; 61 62 public long getDelay() { 63 return delay; 64 } 65 66 public void setDelay(long delay) { 67 this.delay = delay; 68 } 69 70 75 public void requestRender() { 76 77 ScheduledExecutorService scheduleService = 78 renderManager.getScheduledService(); 79 future = scheduleService.schedule(this, delay, TimeUnit.MILLISECONDS); 80 81 if (log.isDebugEnabled()) { 82 log.debug("delay render started: delay is " + delay + " ms"); 83 } 84 } 85 86 public void requestStop() { 87 super.requestStop(); 88 if (future != null && !future.isDone()) { 89 future.cancel(false); 90 } 91 } 92 93 public void run() { 94 super.requestRender(); 95 } 96 97 public void dispose() { 98 super.dispose(); 99 future = null; 100 } 101 } 102 | Popular Tags |