package fitnesse.slim;
import fitnesse.slim.fixtureInteraction.DefaultInteraction;
import fitnesse.slim.fixtureInteraction.FixtureInteraction;
public class JavaSlimFactory extends SlimFactory {
private final NameTranslator identityTranslator = new NameTranslatorIdentity();
private final Integer timeout;
private final boolean verbose;
private final FixtureInteraction interaction;
private JavaSlimFactory(FixtureInteraction interaction, Integer timeout, boolean verbose) {
this.interaction = interaction;
this.timeout = timeout;
this.verbose = verbose;
}
@Override
public StatementExecutorInterface getStatementExecutor() {
StatementExecutorInterface statementExecutor = new StatementExecutor(new SlimExecutionContext(interaction));
if (timeout != null) {
statementExecutor = StatementTimeoutExecutor.decorate(statementExecutor, timeout);
}
return statementExecutor;
}
@Override
public NameTranslator getMethodNameTranslator() {
return getIdentityTranslator();
}
@Override
public boolean isVerbose() {
return verbose;
}
private NameTranslator getIdentityTranslator() {
return identityTranslator;
}
// Called from main
public static SlimFactory createJavaSlimFactory(SlimService.Options options) {
return createJavaSlimFactory(options.interaction, options.statementTimeout, options.verbose);
}
public static SlimFactory createJavaSlimFactory(FixtureInteraction interaction, Integer timeout, boolean verbose) {
return new JavaSlimFactory(interaction, timeout, verbose);
}
@SuppressWarnings("unchecked")
public static FixtureInteraction createInteraction(String interactionClassName) {
if (interactionClassName == null) {
return new DefaultInteraction();
}
try {
return ((Class<FixtureInteraction>) Class.forName(interactionClassName)).newInstance();
} catch (Exception e) {
throw new SlimError(e);
}
}
}