Lines 42-47
Link Here
|
42 |
|
42 |
|
43 |
import com.sun.source.tree.Tree; |
43 |
import com.sun.source.tree.Tree; |
44 |
import com.sun.source.util.TreePathScanner; |
44 |
import com.sun.source.util.TreePathScanner; |
|
|
45 |
import java.util.concurrent.atomic.AtomicBoolean; |
45 |
|
46 |
|
46 |
/** |
47 |
/** |
47 |
* |
48 |
* |
Lines 49-66
Link Here
|
49 |
*/ |
50 |
*/ |
50 |
public class CancellableTreePathScanner<R,P> extends TreePathScanner<R,P> { |
51 |
public class CancellableTreePathScanner<R,P> extends TreePathScanner<R,P> { |
51 |
|
52 |
|
52 |
private boolean canceled; |
53 |
private final AtomicBoolean internalCanceled; |
|
|
54 |
private final AtomicBoolean canceled; |
53 |
|
55 |
|
54 |
/** Creates a new instance of CancellableTreeScanner */ |
56 |
/**Construct a new CancellableTreePathScanner which can be canceled by calling |
|
|
57 |
* the {@link #cancel} method. |
58 |
*/ |
55 |
public CancellableTreePathScanner() { |
59 |
public CancellableTreePathScanner() { |
|
|
60 |
this(null); |
56 |
} |
61 |
} |
57 |
|
62 |
|
58 |
protected synchronized boolean isCanceled() { |
63 |
/**Construct a new CancellableTreePath Scanner which can be canceled either by calling |
59 |
return canceled; |
64 |
* the {@link #cancel} method, or by setting <code>true</code> into the provided |
|
|
65 |
* <code>canceled</code> {@link AtomicBoolean}. |
66 |
* |
67 |
* @param canceled an {@link AtomicBoolean} through which this scanner can be canceled. |
68 |
* The scanner never changes the state of the {@link AtomicBoolean}. |
69 |
* @since 0.29 |
70 |
*/ |
71 |
public CancellableTreePathScanner(AtomicBoolean canceled) { |
72 |
this.canceled = canceled; |
73 |
|
74 |
this.internalCanceled = new AtomicBoolean(); |
60 |
} |
75 |
} |
61 |
|
76 |
|
62 |
public synchronized void cancel() { |
77 |
protected boolean isCanceled() { |
63 |
canceled = true; |
78 |
return internalCanceled.get() || (canceled != null && canceled.get()); |
|
|
79 |
} |
80 |
|
81 |
public void cancel() { |
82 |
internalCanceled.set(true); |
64 |
} |
83 |
} |
65 |
|
84 |
|
66 |
/** @inheritDoc |
85 |
/** @inheritDoc |