1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.github.dexecutor.core;
18
19 import java.io.Serializable;
20 import java.util.concurrent.Callable;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import com.github.dexecutor.core.TaskProvider;
26 import com.github.dexecutor.core.TaskProvider.Task;
27 import com.github.dexecutor.core.graph.Node;
28
29
30
31
32
33
34
35
36
37 class NonTerminatingTask <T extends Comparable<T>, R> implements Callable<Node<T, R>> , Serializable {
38 private static final Logger logger = LoggerFactory.getLogger(NonTerminatingTask.class);
39
40
41
42 private static final long serialVersionUID = 1L;
43 private Node<T, R> node;
44 private TaskProvider<T, R> taskProvider;
45
46 public NonTerminatingTask(final TaskProvider<T, R> taskProvider, final Node<T, R> graphNode) {
47 this.taskProvider = taskProvider;
48 this.node = graphNode;
49 }
50 public Node<T, R> call() throws Exception {
51 try {
52 Task<T, R> task = new ExecutorTask<T, R>(node, this.taskProvider.provid(node.getValue()));
53 task.setConsiderExecutionError(false);
54 task.execute();
55 } catch(Exception ex) {
56 logger.error("Exception caught, executing node # " + this.node.getValue(), ex);
57 this.node.setErrored();
58 }
59 return this.node;
60 }
61 }