Skip to content

Commit 0e27023

Browse files
author
Anton Deryabin
committed
Fixed broken data table lambda registration
1 parent 7685c69 commit 0e27023

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

java8/src/main/java/io/cucumber/java8/Java8DataTableTypeDefinition.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.lang.reflect.Method;
99
import java.lang.reflect.Type;
1010
import java.util.Map;
11+
import net.jodah.typetools.TypeResolver;
1112

1213
final class Java8DataTableTypeDefinition extends AbstractGlueDefinition implements DataTableTypeDefinition {
1314

@@ -19,7 +20,7 @@ final class Java8DataTableTypeDefinition extends AbstractGlueDefinition implemen
1920
}
2021

2122
private DataTableType createDataTableType(Method method) {
22-
Type returnType = method.getGenericReturnType();
23+
Class returnType = TypeResolver.resolveRawArguments(DataTableDefinitionBody.class, body.getClass())[0];
2324
Type[] parameterTypes = method.getGenericParameterTypes();
2425
Type parameterType = parameterTypes[0];
2526

java8/src/main/java/io/cucumber/java8/Java8DocStringTypeDefinition.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.cucumber.core.backend.DocStringTypeDefinition;
44
import io.cucumber.core.runtime.Invoker;
55
import io.cucumber.docstring.DocStringType;
6+
import net.jodah.typetools.TypeResolver;
67

78
final class Java8DocStringTypeDefinition extends AbstractGlueDefinition implements DocStringTypeDefinition {
89

@@ -15,6 +16,7 @@ public DocStringType docStringType() {
1516

1617
Java8DocStringTypeDefinition(Object body, String contentType) {
1718
super(body, new Exception().getStackTrace()[3]);
19+
Class returnType = TypeResolver.resolveRawArguments(DocStringDefinitionBody.class, body.getClass())[0];
1820
this.docStringType = new DocStringType(
1921
this.method.getReturnType(),
2022
contentType.isEmpty() ? method.getName() : contentType,

java8/src/main/java/io/cucumber/java8/Java8ParameterTypeDefinition.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.cucumber.core.runtime.Invoker;
55
import io.cucumber.cucumberexpressions.ParameterType;
66
import java.util.Collections;
7+
import net.jodah.typetools.TypeResolver;
78

89
class Java8ParameterTypeDefinition extends AbstractGlueDefinition implements ParameterTypeDefinition {
910

@@ -16,7 +17,8 @@ public ParameterType<?> parameterType() {
1617

1718
Java8ParameterTypeDefinition(Object body, String regex, String name) {
1819
super(body, new Exception().getStackTrace()[3]);
19-
this.parameterType = new ParameterType(name, Collections.singletonList(regex), this.method.getReturnType(), this::execute);
20+
Class returnType = TypeResolver.resolveRawArguments(ParameterDefinitionBody.class, body.getClass())[0];
21+
this.parameterType = new ParameterType(name, Collections.singletonList(regex), returnType, this::execute);
2022
}
2123

2224
private Object execute(String parameterContent) throws Throwable {

0 commit comments

Comments
 (0)