EMMA Coverage Report (generated Thu Jan 20 11:39:44 EST 2011)
[all classes][com.hammurapi.common.concurrent]

COVERAGE SUMMARY FOR SOURCE FILE [NonBlockingFutureTask.java]

nameclass, %method, %block, %line, %
NonBlockingFutureTask.java0%   (0/1)0%   (0/3)0%   (0/17)0%   (0/7)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class NonBlockingFutureTask0%   (0/1)0%   (0/3)0%   (0/17)0%   (0/7)
NonBlockingFutureTask (Callable): void 0%   (0/1)0%   (0/4)0%   (0/2)
NonBlockingFutureTask (Runnable, Object): void 0%   (0/1)0%   (0/5)0%   (0/2)
get (): Object 0%   (0/1)0%   (0/8)0%   (0/3)

1package com.hammurapi.common.concurrent;
2 
3import java.util.concurrent.Callable;
4import java.util.concurrent.ExecutionException;
5import java.util.concurrent.FutureTask;
6 
7/**
8 * Future task which cannot block in get() indefinitely. If it is not yet started,
9 * the task gets executed in the caller thread. 
10 * @author Pavel Vlasov
11 *
12 * @param <V>
13 */
14public class NonBlockingFutureTask<V> extends FutureTask<V> {
15        
16        public NonBlockingFutureTask(Callable<V> callable) {
17                super(callable);        
18        }
19        
20        public NonBlockingFutureTask(Runnable runnable, V result) {
21                super(runnable, result);
22        }
23                
24        @Override
25        public V get() throws InterruptedException, ExecutionException {
26                if (!isDone()) {
27                        run();
28                }
29                return super.get();
30        }
31        
32}

[all classes][com.hammurapi.common.concurrent]
EMMA 2.0.5312 EclEmma Fix 2 (C) Vladimir Roubtsov