package org.ow2.choreos.invoker;
import java.util.concurrent.Callable;
import org.ow2.choreos.utils.TimeoutsAndTrials;
/**
* Retrieves configuration from timeouts_and_trials
*
* @author leonardo
*
* @param <T>
*/
public class StaticInvokerConfigurator<T> implements InvokerConfigurator<T> {
private String taskName;
private Callable<T> task;
private InvokerBuilder<T> builder;
@Override
public InvokerBuilder<T> getConfiguredInvokerBuilder(String taskName, Callable<T> task) {
this.taskName = taskName;
this.task = task;
initBuilder();
setTrials();
setPause();
return builder;
}
private void initBuilder() {
int timeout = TimeoutsAndTrials.get(taskName + "_TIMEOUT");
builder = new InvokerBuilder<T>(taskName, task, timeout);
}
private void setTrials() {
try {
int trials = TimeoutsAndTrials.get(taskName + "_TRIALS");
builder.trials(trials);
} catch (IllegalArgumentException e) {
// pas du problem: InvokerBuilder will use default value
}
}
private void setPause() {
try {
int pause = TimeoutsAndTrials.get(taskName + "_PAUSE");
builder.pauseBetweenTrials(pause);
} catch (IllegalArgumentException e) {
// pas du problem: InvokerBuilder will use default value
}
}
}