diff --git a/core/src/main/java/cucumber/api/DataTable.java b/core/src/main/java/cucumber/api/DataTable.java index a953760115..f3fb4c4bae 100644 --- a/core/src/main/java/cucumber/api/DataTable.java +++ b/core/src/main/java/cucumber/api/DataTable.java @@ -3,7 +3,6 @@ import cucumber.runtime.CucumberException; import cucumber.runtime.ParameterInfo; import cucumber.runtime.table.DiffableRow; -import cucumber.runtime.table.TableConverter; import cucumber.runtime.table.TableDiffException; import cucumber.runtime.table.TableDiffer; import cucumber.runtime.table.TablePrinter; @@ -42,7 +41,7 @@ public static DataTable create(List raw, Locale locale, String... columnNames private static DataTable create(List raw, Locale locale, String format, String... columnNames) { ParameterInfo parameterInfo = new ParameterInfo(null, format, null, null); - TableConverter tableConverter = new TableConverter(new LocalizedXStreams(Thread.currentThread().getContextClassLoader()).get(locale), parameterInfo); + TableConverter tableConverter = new cucumber.runtime.table.TableConverter(new LocalizedXStreams(Thread.currentThread().getContextClassLoader()).get(locale), parameterInfo); return tableConverter.toTable(raw, columnNames); } diff --git a/core/src/main/java/cucumber/api/TableConverter.java b/core/src/main/java/cucumber/api/TableConverter.java new file mode 100644 index 0000000000..2a2b81450c --- /dev/null +++ b/core/src/main/java/cucumber/api/TableConverter.java @@ -0,0 +1,19 @@ +package cucumber.api; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; + +public interface TableConverter { + T convert(DataTable dataTable, Type type, boolean transposed); + + List toList(DataTable dataTable, Type itemType); + + List> toLists(DataTable dataTable, Type itemType); + + Map toMap(DataTable dataTable, Type keyType, Type valueType); + + List> toMaps(DataTable dataTable, Type keyType, Type valueType); + + DataTable toTable(List objects, String... columnNames); +} diff --git a/core/src/main/java/cucumber/api/TestCase.java b/core/src/main/java/cucumber/api/TestCase.java index 0faadf9603..c095116c87 100644 --- a/core/src/main/java/cucumber/api/TestCase.java +++ b/core/src/main/java/cucumber/api/TestCase.java @@ -15,12 +15,40 @@ public class TestCase { private final List testSteps; private final boolean dryRun; + /** + * Creates a new instance of a test case. + * + * @param testSteps of the test case + * @param pickleEvent the pickle executed by this test case + * @deprecated not part of the public api + */ + @Deprecated + public TestCase(List testSteps, PickleEvent pickleEvent) { + this(testSteps, pickleEvent, false); + } + + /** + * Creates a new instance of a test case. + * + * @param testSteps of the test case + * @param pickleEvent the pickle executed by this test case + * @param dryRun skip execution of the test steps + * @deprecated not part of the public api + */ + @Deprecated public TestCase(List testSteps, PickleEvent pickleEvent, boolean dryRun) { this.testSteps = testSteps; this.pickleEvent = pickleEvent; this.dryRun = dryRun; } + /** + * Executes the test case. + * + * @param bus to which events should be broadcast + * @deprecated not part of the public api + */ + @Deprecated public void run(EventBus bus) { boolean skipNextStep = this.dryRun; Long startTime = bus.getTime(); diff --git a/core/src/main/java/cucumber/api/TestStep.java b/core/src/main/java/cucumber/api/TestStep.java index c65d6efb11..0fd71e7ada 100644 --- a/core/src/main/java/cucumber/api/TestStep.java +++ b/core/src/main/java/cucumber/api/TestStep.java @@ -17,11 +17,24 @@ public abstract class TestStep { "org.junit.AssumptionViolatedException", "org.junit.internal.AssumptionViolatedException" }; + static { Arrays.sort(ASSUMPTION_VIOLATED_EXCEPTIONS); } + + /** + * @deprecated not part of the public api + */ + @Deprecated protected final DefinitionMatch definitionMatch; + /** + * Creates a new test step from the matching step definition + * + * @param definitionMatch the matching step definition + * @deprecated not part of the public api + */ + @Deprecated public TestStep(DefinitionMatch definitionMatch) { this.definitionMatch = definitionMatch; } @@ -52,6 +65,15 @@ public List getDefinitionArgument() { public abstract HookType getHookType(); + /** + * @param bus to which events should be broadcast + * @param language in which the step is defined + * @param scenario of which this step is part + * @param skipSteps if this step should be skipped + * @return result of running this step + * @deprecated not part of the public api + */ + @Deprecated public Result run(EventBus bus, String language, Scenario scenario, boolean skipSteps) { Long startTime = bus.getTime(); bus.send(new TestStepStarted(startTime, this)); @@ -69,10 +91,12 @@ public Result run(EventBus bus, String language, Scenario scenario, boolean skip return result; } + @Deprecated protected Result.Type nonExceptionStatus(boolean skipSteps) { return skipSteps ? Result.Type.SKIPPED : Result.Type.PASSED; } + @Deprecated protected Result.Type executeStep(String language, Scenario scenario, boolean skipSteps) throws Throwable { if (!skipSteps) { definitionMatch.runStep(language, scenario); diff --git a/core/src/main/java/cucumber/runtime/StepDefinitionMatch.java b/core/src/main/java/cucumber/runtime/StepDefinitionMatch.java index 2a067e613f..cda4bff003 100644 --- a/core/src/main/java/cucumber/runtime/StepDefinitionMatch.java +++ b/core/src/main/java/cucumber/runtime/StepDefinitionMatch.java @@ -2,7 +2,7 @@ import cucumber.api.DataTable; import cucumber.api.Scenario; -import cucumber.runtime.table.TableConverter; +import cucumber.api.TableConverter; import cucumber.runtime.xstream.LocalizedXStreams; import cucumber.util.Mapper; import gherkin.pickles.PickleCell; @@ -100,7 +100,7 @@ private ParameterInfo getParameterType(int n, Type argumentType) { private Object tableArgument(PickleTable stepArgument, int argIndex, LocalizedXStreams.LocalizedXStream xStream) { ParameterInfo parameterInfo = getParameterType(argIndex, DataTable.class); - TableConverter tableConverter = new TableConverter(xStream, parameterInfo); + TableConverter tableConverter = new cucumber.runtime.table.TableConverter(xStream, parameterInfo); DataTable table = new DataTable(stepArgument, tableConverter); Type type = parameterInfo.getType(); return tableConverter.convert(table, type, parameterInfo.isTransposed()); diff --git a/core/src/main/java/cucumber/runtime/table/DataTableDiff.java b/core/src/main/java/cucumber/runtime/table/DataTableDiff.java index bd37f7c890..5d60a768c1 100644 --- a/core/src/main/java/cucumber/runtime/table/DataTableDiff.java +++ b/core/src/main/java/cucumber/runtime/table/DataTableDiff.java @@ -1,6 +1,7 @@ package cucumber.runtime.table; import cucumber.api.DataTable; +import cucumber.api.TableConverter; import gherkin.pickles.PickleRow; import gherkin.pickles.PickleTable; diff --git a/core/src/main/java/cucumber/runtime/table/TableConverter.java b/core/src/main/java/cucumber/runtime/table/TableConverter.java index ceda536c7c..73e84ba619 100644 --- a/core/src/main/java/cucumber/runtime/table/TableConverter.java +++ b/core/src/main/java/cucumber/runtime/table/TableConverter.java @@ -34,7 +34,7 @@ /** * This class converts a {@link cucumber.api.DataTable} to various other types. */ -public class TableConverter { +public class TableConverter implements cucumber.api.TableConverter { private final LocalizedXStreams.LocalizedXStream xStream; private final ParameterInfo parameterInfo; @@ -55,6 +55,7 @@ public TableConverter(LocalizedXStreams.LocalizedXStream xStream, ParameterInfo * @param transposed whether the table should be transposed first. * @return the transformed object. */ + @Override public T convert(DataTable dataTable, Type type, boolean transposed) { if (transposed) { dataTable = dataTable.transpose(); @@ -117,6 +118,7 @@ private List toListOfComplexType(DataTable dataTable, Class itemType) } } + @Override public List toList(DataTable dataTable, Type itemType) { SingleValueConverter itemConverter = xStream.getSingleValueConverter(itemType); if (itemConverter != null) { @@ -141,6 +143,7 @@ private List toList(DataTable dataTable, SingleValueConverter itemConvert return Collections.unmodifiableList(result); } + @Override public List> toLists(DataTable dataTable, Type itemType) { try { xStream.setParameterInfo(parameterInfo); @@ -163,6 +166,7 @@ public List> toLists(DataTable dataTable, Type itemType) { } } + @Override public Map toMap(DataTable dataTable, Type keyType, Type valueType) { try { xStream.setParameterInfo(parameterInfo); @@ -188,6 +192,7 @@ public Map toMap(DataTable dataTable, Type keyType, Type valueType) } } + @Override public List> toMaps(DataTable dataTable, Type keyType, Type valueType) { try { xStream.setParameterInfo(parameterInfo); @@ -227,6 +232,7 @@ public List> toMaps(DataTable dataTable, Type keyType, Type val * @param columnNames an explicit list of column names * @return a DataTable */ + @Override public DataTable toTable(List objects, String... columnNames) { try { xStream.setParameterInfo(parameterInfo);