| %line | %branch | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| nl.toolforge.karma.core.vc.threads.RunnerThread |
|
|
| 1 | /* |
|
| 2 | Karma core - Core of the Karma application |
|
| 3 | Copyright (C) 2004 Toolforge <www.toolforge.nl> |
|
| 4 | ||
| 5 | This library is free software; you can redistribute it and/or |
|
| 6 | modify it under the terms of the GNU Lesser General Public |
|
| 7 | License as published by the Free Software Foundation; either |
|
| 8 | version 2.1 of the License, or (at your option) any later version. |
|
| 9 | ||
| 10 | This library 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 GNU |
|
| 13 | Lesser General Public License for more details. |
|
| 14 | ||
| 15 | You should have received a copy of the GNU Lesser General Public |
|
| 16 | License along with this library; if not, write to the Free Software |
|
| 17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
| 18 | */ |
|
| 19 | package nl.toolforge.karma.core.vc.threads; |
|
| 20 | ||
| 21 | import nl.toolforge.karma.core.KarmaRuntimeException; |
|
| 22 | import nl.toolforge.karma.core.module.Module; |
|
| 23 | ||
| 24 | /** |
|
| 25 | * @author D.A. Smedes |
|
| 26 | * @version $Id: RunnerThread.java,v 1.6 2004/11/10 23:53:09 asmedes Exp $ |
|
| 27 | */ |
|
| 28 | public abstract class RunnerThread extends Thread { |
|
| 29 | ||
| 30 | 50 | private boolean running = true; |
| 31 | ||
| 32 | 50 | protected Throwable exception = null; |
| 33 | 50 | protected RunnerResult result = null; |
| 34 | 50 | private Module module = null; |
| 35 | ||
| 36 | 50 | public RunnerThread(Module module) { |
| 37 | 50 | this.module = module; |
| 38 | 50 | } |
| 39 | ||
| 40 | /** |
|
| 41 | * Must be implemented by subclasses. The subclass is where all logic is performed. |
|
| 42 | */ |
|
| 43 | public abstract void run(); |
|
| 44 | ||
| 45 | /** |
|
| 46 | * Should be called to demarkate the start of the 'transaction'. |
|
| 47 | */ |
|
| 48 | protected void startRunning() { |
|
| 49 | 50 | running = true; |
| 50 | 50 | } |
| 51 | ||
| 52 | /** |
|
| 53 | * Should be called to demarkate the end of the 'transaction'. |
|
| 54 | */ |
|
| 55 | protected void stopRunning() { |
|
| 56 | 50 | running = false; |
| 57 | 50 | } |
| 58 | ||
| 59 | /** |
|
| 60 | * Should be checked to ensure that <code>run()</code> is finished. |
|
| 61 | * |
|
| 62 | * @return |
|
| 63 | */ |
|
| 64 | public final boolean isRunning() { |
|
| 65 | 0 | return running; |
| 66 | } |
|
| 67 | ||
| 68 | public final RunnerResult getResult() { |
|
| 69 | 50 | return result; |
| 70 | } |
|
| 71 | ||
| 72 | /** |
|
| 73 | * Returns the module status, irrespective of whether this thread has finished executing or not. This check can be |
|
| 74 | * performed by calling {@link #isRunning()}. |
|
| 75 | * |
|
| 76 | * @return The ModuleStatus instance generated based on what the {@link #run()} has done when executed properly. |
|
| 77 | */ |
|
| 78 | public Module getModule() { |
|
| 79 | 250 | if (module == null) { |
| 80 | 0 | throw new KarmaRuntimeException("Module instance has not been set."); |
| 81 | } |
|
| 82 | 250 | return module; |
| 83 | } |
|
| 84 | ||
| 85 | public Throwable getException() { |
|
| 86 | 0 | return exception; |
| 87 | } |
|
| 88 | ||
| 89 | } |
| This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |