package cuke4duke.internal.language; import java.util.List; public abstract class AbstractStepDefinition implements StepDefinition { private final AbstractProgrammingLanguage programmingLanguage; public AbstractStepDefinition(AbstractProgrammingLanguage programmingLanguage) { this.programmingLanguage = programmingLanguage; } protected void register() throws Throwable { programmingLanguage.availableStepDefinition(regexp_source(), file_colon_line()); } public final void invoke(List<Object> arguments) throws Throwable { programmingLanguage.invoked(regexp_source(), file_colon_line()); invokeWithArgs(arguments.toArray()); } public abstract Object invokeWithArgs(Object[] args) throws Throwable; }