diff --git a/scala/scala_2.11/pom.xml b/scala/scala_2.11/pom.xml
index 13317610..bac3719c 100644
--- a/scala/scala_2.11/pom.xml
+++ b/scala/scala_2.11/pom.xml
@@ -85,6 +85,8 @@
-deprecation
-feature
+
+ -language:implicitConversions
**/*.java
diff --git a/scala/scala_2.12/pom.xml b/scala/scala_2.12/pom.xml
index be5e9703..438f552d 100644
--- a/scala/scala_2.12/pom.xml
+++ b/scala/scala_2.12/pom.xml
@@ -78,6 +78,8 @@
-deprecation
-feature
+
+ -language:implicitConversions
**/*.java
diff --git a/scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala b/scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala
index c86c236f..46232f07 100644
--- a/scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala
+++ b/scala/sources/src/test/scala/tests/cukes/RunCukesTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunCukesTest
diff --git a/scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala b/scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala
index e383c6da..5542fa1f 100644
--- a/scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala
+++ b/scala/sources/src/test/scala/tests/cukes/TypeRegistryConfiguration.scala
@@ -1,115 +1,41 @@
package tests.cukes
-import java.lang.reflect.Type
-import java.util
-import java.util.{Locale, Map => JMap}
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import io.cucumber.core.api.{TypeRegistry, TypeRegistryConfigurer}
-import io.cucumber.cucumberexpressions.{ParameterByTypeTransformer, ParameterType, Transformer}
-import io.cucumber.datatable.{DataTableType, TableCellByTypeTransformer, TableEntryByTypeTransformer, TableEntryTransformer}
+import io.cucumber.scala.ScalaDsl
import tests.cukes.model.{Cukes, Person, Snake}
-import scala.annotation.nowarn
-
-@nowarn
-class TypeRegistryConfiguration extends TypeRegistryConfigurer {
+class TypeRegistryConfiguration extends ScalaDsl {
/**
- * Transforms an ASCII snake into an object, for example:
- *
- * {{{
- * ====> becomes Snake(length = 5, direction = 'east)
- * ==> becomes Snake(length = 3, direction = 'east)
- * }}}
- */
- private val snakeTransformer = new Transformer[Snake]() {
- def transform(s: String) = {
- val size = s.size
- val direction = s.toList match {
- case '<' :: _ => Symbol("west")
- case l if l.last == '>' => Symbol("east")
- }
- Snake(size, direction)
- }
- }
-
- private val personTransformer = new Transformer[Person]() {
- def transform(s: String) = {
- Person(s)
+ * Transforms an ASCII snake into an object, for example:
+ *
+ * {{{
+ * ====> becomes Snake(length = 5, direction = 'east)
+ * ==> becomes Snake(length = 3, direction = 'east)
+ * }}}
+ */
+ ParameterType("snake", "[=><]+") { s =>
+ val size = s.length
+ val direction = s.toList match {
+ case '<' :: _ => Symbol("west")
+ case l if l.last == '>' => Symbol("east")
}
+ Snake(size, direction)
}
- private val booleanTransformer = new Transformer[Boolean]() {
- def transform(s: String) = {
- s.trim.equals("true")
- }
+ ParameterType("person", ".+") { s =>
+ Person(s)
}
- private val charTransformer = new Transformer[Char]() {
- def transform(s: String) = {
- s.charAt(0)
- }
- }
-
- private val listTransformer =new TableEntryTransformer[Cukes]() {
- override def transform(map: util.Map[String, String]): Cukes = {
- new Cukes(map.get("Number").toInt, map.get("Color"))
- }
+ ParameterType("boolean", "true|false") { s =>
+ s.trim.equals("true")
}
- override def locale(): Locale = Locale.ENGLISH
-
- override def configureTypeRegistry(typeRegistry: TypeRegistry): Unit = {
- val defaultTransformer = new DefaultTransformer()
- typeRegistry.setDefaultDataTableCellTransformer(defaultTransformer)
- typeRegistry.setDefaultDataTableEntryTransformer(defaultTransformer)
- typeRegistry.setDefaultParameterTransformer(defaultTransformer)
-
- typeRegistry.defineParameterType(new ParameterType[Snake](
- "snake",
- "[=><]+",
- classOf[Snake],
- snakeTransformer
- ))
-
- typeRegistry.defineParameterType(new ParameterType[Person](
- "person",
- ".+",
- classOf[Person],
- personTransformer
- ))
-
- typeRegistry.defineParameterType(new ParameterType[Boolean](
- "boolean",
- "true|false",
- classOf[Boolean],
- booleanTransformer
- ))
-
- typeRegistry.defineParameterType(new ParameterType[Char](
- "char",
- ".",
- classOf[Char],
- charTransformer
- ))
-
- typeRegistry.defineDataTableType(new DataTableType(classOf[Cukes],listTransformer))
+ ParameterType("char", ".") { s =>
+ s.charAt(0)
}
- private class DefaultTransformer
- extends ParameterByTypeTransformer
- with TableEntryByTypeTransformer
- with TableCellByTypeTransformer {
-
- var objectMapper: ObjectMapper = new ObjectMapper()
-
- override def transform(s: String, `type`: Type): AnyRef =
- objectMapper.convertValue(s, objectMapper.constructType(`type`))
-
- override def transform(map: JMap[String, String], `type`: Type, tableCellByTypeTransformer: TableCellByTypeTransformer): AnyRef = {
- objectMapper.convertValue(map, objectMapper.constructType(`type`))
- }
+ DataTableType { map: Map[String, String] =>
+ Cukes(map("Number").toInt, map("Color"))
}
}
diff --git a/scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala b/scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala
index 38a783e5..75a6f5cf 100644
--- a/scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala
+++ b/scala/sources/src/test/scala/tests/datatables/RunDatatablesTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunDatatablesTest
diff --git a/scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala b/scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala
index 5c6f1cae..b1b4bb74 100644
--- a/scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala
+++ b/scala/sources/src/test/scala/tests/docstring/RunDocStringTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunDocStringTest
diff --git a/scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala b/scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala
index 107859d7..9bfd86cb 100644
--- a/scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala
+++ b/scala/sources/src/test/scala/tests/isolated/RunIsolatedTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunIsolatedTest
diff --git a/scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala b/scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala
index 2efc18c5..b33232fb 100644
--- a/scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala
+++ b/scala/sources/src/test/scala/tests/jackson/RunJacksonTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunJacksonTest
diff --git a/scala/sources/src/test/scala/tests/misc/RunMiscTest.scala b/scala/sources/src/test/scala/tests/misc/RunMiscTest.scala
index 61d0ddbf..a4f6faf0 100644
--- a/scala/sources/src/test/scala/tests/misc/RunMiscTest.scala
+++ b/scala/sources/src/test/scala/tests/misc/RunMiscTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunMiscTest
diff --git a/scala/sources/src/test/scala/tests/object/RunObjectTest.scala b/scala/sources/src/test/scala/tests/object/RunObjectTest.scala
index 90214a42..fb7120d8 100644
--- a/scala/sources/src/test/scala/tests/object/RunObjectTest.scala
+++ b/scala/sources/src/test/scala/tests/object/RunObjectTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunObjectTest
diff --git a/scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala b/scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala
index 904e36c7..e5b3bfd8 100644
--- a/scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala
+++ b/scala/sources/src/test/scala/tests/parametertypes/RunParameterTypesTest.scala
@@ -4,5 +4,5 @@ import io.cucumber.junit.{Cucumber, CucumberOptions}
import org.junit.runner.RunWith
@RunWith(classOf[Cucumber])
-@CucumberOptions(strict = true)
+@CucumberOptions()
class RunParameterTypesTest