KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > async > render > DelayRenderer


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

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 /**
43  * The DelayRenderer is type of {@link GroupAsyncRenderer} that is used to
44  * request a single render pass on a group of Renderables. The render pass is
45  * executed after a specified time delay. DelayRenderers can be created and
46  * used directly but it is recommended to use the RenderManager to create and
47  * managed named render groups.
48  *
49  * @author ICEsoft Technologies, Inc.
50  * @see RenderManager, GroupAsyncRenderer
51  */

52 public class DelayRenderer extends OnDemandRenderer implements Runnable JavaDoc {
53
54     private static Log log = LogFactory.getLog(IntervalRenderer.class);
55     private ScheduledFuture future;
56
57     /**
58      * The delay value to use before request a render pass on the group.
59      */

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     /**
71      * Schedules a render pass on the group of Renderables using the delay value
72      * specified using {@link #setDelay}. If a delay value was not
73      * explicitly set, then the default delay value (60000 ms) is used.
74      */

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