View Javadoc

1   /*
2    *  XNap - A P2P framework and client.
3    *
4    *  See the file AUTHORS for copyright information.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation.
9    *
10   *  This program is distributed in the hope that it will be useful,
11   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   *  GNU General Public License for more details.
14   *
15   *  You should have received a copy of the GNU General Public License
16   *  along with this program; if not, write to the Free Software
17   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   */
19  
20  package org.xnap.util;
21  
22  import java.util.TimerTask;
23  
24  import org.apache.log4j.Logger;
25  
26  /***
27   * Provides a task that captures exceptions.
28   */
29  public abstract class XNapTask {
30  
31      //--- Constant(s) ---
32  
33  	private static Logger logger = Logger.getLogger(XNapTask.class);
34  	
35  	ProxyTask task = new ProxyTask();
36  	
37      //--- Data field(s) ---
38  
39  	public void cancel()
40  	{
41  		task.cancel();
42  	}
43  	
44  	TimerTask getTimerTask()
45  	{
46  		return task;
47  	}
48  	
49  	public abstract void run(); 
50  	
51  	public long scheduledExecutionTime()
52  	{
53  		return task.scheduledExecutionTime();
54  	}
55  	
56      /***
57       * 
58       */
59      private class ProxyTask extends TimerTask {
60  	
61  		public ProxyTask()
62  		{
63  		}
64  
65  		public void run() 
66  		{
67  			try {
68  				XNapTask.this.run();
69  			}
70  			catch (Throwable e) {
71  				UncaughtExceptionManager.getInstance().notify(e);
72  			}
73  		}
74  
75      }
76  
77  }
78  
79  
80  
81  
82