Skip to content

Commit 2500b26

Browse files
authored
Merge pull request #52 from cucumber/clean-warnings-scala
Clean warnings scala
2 parents a5281d4 + 5a8bac1 commit 2500b26

33 files changed

+204
-107
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ See also the [CHANGELOG](https://github.com/cucumber/cucumber-jvm/blob/master/CH
2626

2727
### Fixed
2828

29+
- [Build] Remove build warnings ([#45](https://github.com/cucumber/cucumber-jvm-scala/issues/45) Gaël Jourdan-Weil)
2930

3031
## [5.6.0] (2020-05-03)
3132

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<minimum.maven.version>3.3</minimum.maven.version>
2121
<outputDirectory>${project.build.directory}</outputDirectory>
2222
<scala-maven-plugin.version>3.4.6</scala-maven-plugin.version>
23+
<build-helper-maven-plugin.version>3.1.0</build-helper-maven-plugin.version>
2324
<cucumber.version>5.7.0</cucumber.version>
2425
<gherkin.version>9.2.0</gherkin.version>
2526
<groovy.version>2.4.19</groovy.version>
@@ -235,6 +236,12 @@
235236
</executions>
236237
</plugin>
237238

239+
<plugin>
240+
<groupId>org.codehaus.mojo</groupId>
241+
<artifactId>build-helper-maven-plugin</artifactId>
242+
<version>${build-helper-maven-plugin.version}</version>
243+
</plugin>
244+
238245
<!-- Non-standard plugins -->
239246
<plugin>
240247
<groupId>net.alchim31.maven</groupId>

scala/scala_2.11/pom.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<version>${scala.2.11.version}</version>
1919
<scope>provided</scope>
2020
</dependency>
21+
<dependency>
22+
<groupId>org.scala-lang.modules</groupId>
23+
<artifactId>scala-collection-compat_2.11</artifactId>
24+
<version>2.1.6</version>
25+
</dependency>
2126

2227
<!-- Users have to provide it (for JacksonDefaultDataTableTransformer) -->
2328
<dependency>
@@ -55,6 +60,24 @@
5560
</testResource>
5661
</testResources>
5762
<plugins>
63+
<!-- Extra Sources for Scala 2.11 -->
64+
<plugin>
65+
<groupId>org.codehaus.mojo</groupId>
66+
<artifactId>build-helper-maven-plugin</artifactId>
67+
<executions>
68+
<execution>
69+
<phase>generate-sources</phase>
70+
<goals>
71+
<goal>add-source</goal>
72+
</goals>
73+
<configuration>
74+
<sources>
75+
<source>src/main/scala</source>
76+
</sources>
77+
</configuration>
78+
</execution>
79+
</executions>
80+
</plugin>
5881
<plugin>
5982
<groupId>net.alchim31.maven</groupId>
6083
<artifactId>scala-maven-plugin</artifactId>
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package io.cucumber
2+
3+
import java.lang.reflect.Type
4+
import java.util.function.Supplier
5+
import java.util.{List => JavaList, Map => JavaMap}
6+
7+
import io.cucumber.cucumberexpressions.{CaptureGroupTransformer, ParameterByTypeTransformer}
8+
import io.cucumber.datatable._
9+
import io.cucumber.docstring.DocStringType.Transformer
10+
11+
/**
12+
* Only for Scala 2.11 which does not support some Single Abstract Method
13+
*/
14+
package object scala {
15+
16+
import language.implicitConversions
17+
18+
// Cucumber Scala Types
19+
20+
implicit def function1AsDataTableEntryDefinitionBody[T](f: (Map[String, String]) => T): DataTableEntryDefinitionBody[T] = new DataTableEntryDefinitionBody[T] {
21+
override def transform(entry: Map[String, String]): T = f.apply(entry)
22+
}
23+
24+
25+
implicit def function1AsDataTableRowDefinitionBody[T](f: (Seq[String]) => T): DataTableRowDefinitionBody[T] = new DataTableRowDefinitionBody[T] {
26+
override def transform(row: Seq[String]): T = f.apply(row)
27+
}
28+
29+
30+
implicit def function1AsDataTableCellDefinitionBody[T](f: (String) => T): DataTableCellDefinitionBody[T] = new DataTableCellDefinitionBody[T] {
31+
override def transform(cell: String): T = f.apply(cell)
32+
}
33+
34+
35+
implicit def function1AsDataTableDefinitionBody[T](f: (DataTable) => T): DataTableDefinitionBody[T] = new DataTableDefinitionBody[T] {
36+
override def transform(dataTable: DataTable): T = f.apply(dataTable)
37+
}
38+
39+
// Cucumber Core Types
40+
41+
implicit def function1AsTableCellTransformer[T](f: String => T): TableCellTransformer[T] = {
42+
new TableCellTransformer[T] {
43+
override def transform(cell: String): T = f.apply(cell)
44+
}
45+
}
46+
47+
implicit def function1AsTableTransformer[T](f: DataTable => T): TableTransformer[T] = {
48+
new TableTransformer[T] {
49+
override def transform(table: DataTable): T = f.apply(table)
50+
}
51+
}
52+
53+
implicit def function1AsTableEntryTransformer[T](f: JavaMap[String, String] => T): TableEntryTransformer[T] = {
54+
new TableEntryTransformer[T] {
55+
override def transform(entry: JavaMap[String, String]): T = f.apply(entry)
56+
}
57+
}
58+
59+
implicit def function1AsTableRowTransformer[T](f: JavaList[String] => T): TableRowTransformer[T] = {
60+
new TableRowTransformer[T] {
61+
override def transform(row: JavaList[String]): T = f.apply(row)
62+
}
63+
}
64+
65+
implicit def function1AsTableCellByTypeTransformer(f: (String, Type) => AnyRef): TableCellByTypeTransformer = {
66+
new TableCellByTypeTransformer {
67+
override def transform(fromValue: String, toTypeValue: Type): AnyRef = {
68+
f.apply(fromValue, toTypeValue)
69+
}
70+
}
71+
}
72+
73+
implicit def function1AsTableEntryByTypeTransformer(f: (JavaMap[String, String], Type, TableCellByTypeTransformer) => AnyRef): TableEntryByTypeTransformer = {
74+
new TableEntryByTypeTransformer {
75+
override def transform(fromValue: JavaMap[String, String], toValueType: Type, tableCellByTypeTransformer: TableCellByTypeTransformer): AnyRef = {
76+
f.apply(fromValue, toValueType, tableCellByTypeTransformer)
77+
}
78+
}
79+
}
80+
81+
implicit def function1AsParameterByTypeTransformer(f: (String, Type) => AnyRef): ParameterByTypeTransformer = {
82+
new ParameterByTypeTransformer {
83+
override def transform(fromValue: String, toValue: Type): AnyRef = {
84+
f.apply(fromValue, toValue)
85+
}
86+
}
87+
}
88+
89+
implicit def function1AsTransformer[T](f: (String) => T): Transformer[T] = {
90+
new Transformer[T] {
91+
override def transform(s: String): T = {
92+
f.apply(s)
93+
}
94+
}
95+
}
96+
97+
implicit def function1AsCaptureGroupTransformer[T](f: (Array[String]) => T): CaptureGroupTransformer[T] = {
98+
new CaptureGroupTransformer[T] {
99+
override def transform(parameterContent: Array[String]): T = {
100+
f.apply(parameterContent)
101+
}
102+
}
103+
}
104+
105+
// For tests
106+
107+
implicit def function1AsSupplier[T](f: () => T): Supplier[T] = {
108+
new Supplier[T] {
109+
override def get(): T = f.apply()
110+
}
111+
}
112+
113+
}

scala/scala_2.12/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<version>${scala.2.12.version}</version>
1919
<scope>provided</scope>
2020
</dependency>
21+
<dependency>
22+
<groupId>org.scala-lang.modules</groupId>
23+
<artifactId>scala-collection-compat_2.12</artifactId>
24+
<version>2.1.6</version>
25+
</dependency>
2126

2227
<!-- Users have to provide it (for JacksonDefaultDataTableTransformer) -->
2328
<dependency>

scala/sources/src/main/scala/io/cucumber/scala/AbstractDatatableElementTransformerDefinition.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package io.cucumber.scala
33
import io.cucumber.datatable.DataTable
44

55
import scala.util.{Failure, Success, Try}
6-
import scala.collection.JavaConverters._
6+
import scala.jdk.CollectionConverters._
77

88
trait AbstractDatatableElementTransformerDefinition extends AbstractGlueDefinition {
99

scala/sources/src/main/scala/io/cucumber/scala/DataTableDefinitionBody.scala

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,35 +25,3 @@ trait DataTableDefinitionBody[T] {
2525
def transform(dataTable: DataTable): T
2626

2727
}
28-
29-
object DataTableEntryDefinitionBody {
30-
31-
implicit def function1AsDataTableEntryDefinitionBody[T](f: (Map[String, String]) => T): DataTableEntryDefinitionBody[T] = new DataTableEntryDefinitionBody[T] {
32-
override def transform(entry: Map[String, String]): T = f.apply(entry)
33-
}
34-
35-
}
36-
37-
object DataTableRowDefinitionBody {
38-
39-
implicit def function1AsDataTableRowDefinitionBody[T](f: (Seq[String]) => T): DataTableRowDefinitionBody[T] = new DataTableRowDefinitionBody[T] {
40-
override def transform(row: Seq[String]): T = f.apply(row)
41-
}
42-
43-
}
44-
45-
object DataTableCellDefinitionBody {
46-
47-
implicit def function1AsDataTableCellDefinitionBody[T](f: (String) => T): DataTableCellDefinitionBody[T] = new DataTableCellDefinitionBody[T] {
48-
override def transform(cell: String): T = f.apply(cell)
49-
}
50-
51-
}
52-
53-
object DataTableDefinitionBody {
54-
55-
implicit def function1AsDataTableDefinitionBody[T](f: (DataTable) => T): DataTableDefinitionBody[T] = new DataTableDefinitionBody[T] {
56-
override def transform(dataTable: DataTable): T = f.apply(dataTable)
57-
}
58-
59-
}

scala/sources/src/main/scala/io/cucumber/scala/ScalaBackend.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import java.util.{List => JList}
88
import io.cucumber.core.backend._
99
import io.cucumber.core.resource.{ClasspathScanner, ClasspathSupport}
1010

11-
import scala.collection.JavaConverters._
11+
import scala.jdk.CollectionConverters._
1212
import scala.util.Try
1313

1414
class ScalaBackend(lookup: Lookup, container: Container, classLoaderProvider: Supplier[ClassLoader]) extends Backend {

scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableCellDefinition.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ trait ScalaDataTableCellDefinition[T] extends ScalaDataTableTypeDefinition {
1111

1212
override val location: StackTraceElement = new Exception().getStackTrace()(3)
1313

14-
private val transformer: TableCellTransformer[T] = new TableCellTransformer[T] {
15-
override def transform(cell: String): T = {
16-
details.body.transform(replaceEmptyPatternsWithEmptyString(cell))
17-
}
14+
private val transformer: TableCellTransformer[T] = (cell: String) => {
15+
details.body.transform(replaceEmptyPatternsWithEmptyString(cell))
1816
}
1917

2018
override val dataTableType = new DataTableType(details.tag.runtimeClass, transformer)

scala/sources/src/main/scala/io/cucumber/scala/ScalaDataTableDefinition.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ trait ScalaDataTableDefinition[T] extends ScalaDataTableTypeDefinition {
1111

1212
override val location: StackTraceElement = new Exception().getStackTrace()(3)
1313

14-
private val transformer: TableTransformer[T] = new TableTransformer[T] {
15-
override def transform(table: DataTable): T = {
16-
details.body.transform(replaceEmptyPatternsWithEmptyString(table))
17-
}
14+
private val transformer: TableTransformer[T] = (table: DataTable) => {
15+
details.body.transform(replaceEmptyPatternsWithEmptyString(table))
1816
}
1917

2018
override val dataTableType = new DataTableType(details.tag.runtimeClass, transformer)

0 commit comments

Comments
 (0)