Skip to content

Commit e727622

Browse files
author
Tim te Beek
committed
Remove generics from ParameterTypeDefinition & ParameterDefinitionBody
1 parent 36fd570 commit e727622

File tree

3 files changed

+28
-31
lines changed

3 files changed

+28
-31
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
11
package io.cucumber.java8;
22

3+
import java.util.Collections;
4+
35
import io.cucumber.core.backend.ParameterTypeDefinition;
46
import io.cucumber.cucumberexpressions.ParameterType;
57

6-
import java.util.Arrays;
7-
import java.util.Collections;
8-
import net.jodah.typetools.TypeResolver;
9-
import net.jodah.typetools.TypeResolver.Unknown;
10-
118
import static net.jodah.typetools.TypeResolver.resolveRawArguments;
129

13-
class Java8ParameterTypeDefinition<R> extends AbstractGlueDefinition implements ParameterTypeDefinition {
10+
class Java8ParameterTypeDefinition extends AbstractGlueDefinition implements ParameterTypeDefinition {
1411

15-
private final ParameterType<R> parameterType;
12+
private final ParameterType parameterType;
1613

1714
@Override
1815
public ParameterType<?> parameterType() {
1916
return parameterType;
2017
}
2118

22-
<T extends ParameterDefinitionBody<R>> Java8ParameterTypeDefinition(String name, String regex, T body) {
19+
<T extends ParameterDefinitionBody> Java8ParameterTypeDefinition(String name, String regex, Class<T> bodyClass, T body) {
2320
super(body, new Exception().getStackTrace()[3]);
24-
Class<R> returnType = (Class<R>) resolveRawArguments(ParameterDefinitionBody.class, body.getClass())[0];
25-
this.parameterType = new ParameterType<R>(name, Collections.singletonList(regex), returnType, this::execute);
21+
Class<?> returnType = resolveRawArguments(bodyClass, body.getClass())[0];
22+
this.parameterType = new ParameterType(name, Collections.singletonList(regex), returnType, this::execute);
2623
}
2724

28-
private R execute(String[] parameterContent) throws Throwable {
29-
return (R) Invoker.invoke(this, body, method, parameterContent);
25+
private Object execute(String[] parameterContent) throws Throwable {
26+
return Invoker.invoke(this, body, method, parameterContent);
3027
}
3128
}

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

+9-9
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ default <T> void DataTableType(DataTableDefinitionBody<T> body) {
366366
* Expressions</a>
367367
*/
368368
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A1<R> definitionBody) {
369-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
369+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A1.class, definitionBody));
370370
}
371371

372372
/**
@@ -385,55 +385,55 @@ default <R> void ParameterType(String name, String regex, ParameterDefinitionBod
385385
* Expressions</a>
386386
*/
387387
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A2<R> definitionBody) {
388-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
388+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A2.class, definitionBody));
389389
}
390390

391391
/**
392392
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
393393
*/
394394
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A3<R> definitionBody) {
395-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
395+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A3.class, definitionBody));
396396
}
397397

398398
/**
399399
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
400400
*/
401401
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A4<R> definitionBody) {
402-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
402+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A4.class, definitionBody));
403403
}
404404

405405
/**
406406
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
407407
*/
408408
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A5<R> definitionBody) {
409-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
409+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A5.class, definitionBody));
410410
}
411411

412412
/**
413413
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
414414
*/
415415
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A6<R> definitionBody) {
416-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
416+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A6.class, definitionBody));
417417
}
418418

419419
/**
420420
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
421421
*/
422422
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A7<R> definitionBody) {
423-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
423+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A7.class, definitionBody));
424424
}
425425

426426
/**
427427
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
428428
*/
429429
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A8<R> definitionBody) {
430-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
430+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A8.class, definitionBody));
431431
}
432432

433433
/**
434434
* @see LambdaGlue#ParameterType(String, String, io.cucumber.java8.ParameterDefinitionBody.A2)
435435
*/
436436
default <R> void ParameterType(String name, String regex, ParameterDefinitionBody.A9<R> definitionBody) {
437-
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition<>(name, regex, definitionBody));
437+
LambdaGlueRegistry.INSTANCE.get().addParameterType(new Java8ParameterTypeDefinition(name, regex, ParameterDefinitionBody.A9.class, definitionBody));
438438
}
439439
}

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

+10-10
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,41 @@
33
import org.apiguardian.api.API;
44

55
@API(status = API.Status.STABLE)
6-
public interface ParameterDefinitionBody<R> {
6+
public interface ParameterDefinitionBody {
77
@FunctionalInterface
8-
interface A1<R> extends ParameterDefinitionBody<R> {
8+
interface A1<R> extends ParameterDefinitionBody {
99
R accept(String p1) throws Throwable;
1010
}
1111
@FunctionalInterface
12-
interface A2<R> extends ParameterDefinitionBody<R> {
12+
interface A2<R> extends ParameterDefinitionBody {
1313
R accept(String p1, String p2) throws Throwable;
1414
}
1515
@FunctionalInterface
16-
interface A3<R> extends ParameterDefinitionBody<R> {
16+
interface A3<R> extends ParameterDefinitionBody {
1717
R accept(String p1, String p2, String p3) throws Throwable;
1818
}
1919
@FunctionalInterface
20-
interface A4<R> extends ParameterDefinitionBody<R> {
20+
interface A4<R> extends ParameterDefinitionBody {
2121
R accept(String p1, String p2, String p3, String p4) throws Throwable;
2222
}
2323
@FunctionalInterface
24-
interface A5<R> extends ParameterDefinitionBody<R> {
24+
interface A5<R> extends ParameterDefinitionBody {
2525
R accept(String p1, String p2, String p3, String p4, String p5) throws Throwable;
2626
}
2727
@FunctionalInterface
28-
interface A6<R> extends ParameterDefinitionBody<R> {
28+
interface A6<R> extends ParameterDefinitionBody {
2929
R accept(String p1, String p2, String p3, String p4, String p5, String p6) throws Throwable;
3030
}
3131
@FunctionalInterface
32-
interface A7<R> extends ParameterDefinitionBody<R> {
32+
interface A7<R> extends ParameterDefinitionBody {
3333
R accept(String p1, String p2, String p3, String p4, String p5, String p6, String p7) throws Throwable;
3434
}
3535
@FunctionalInterface
36-
interface A8<R> extends ParameterDefinitionBody<R> {
36+
interface A8<R> extends ParameterDefinitionBody {
3737
R accept(String p1, String p2, String p3, String p4, String p5, String p6, String p7, String p8) throws Throwable;
3838
}
3939
@FunctionalInterface
40-
interface A9<R> extends ParameterDefinitionBody<R> {
40+
interface A9<R> extends ParameterDefinitionBody {
4141
R accept(String p1, String p2, String p3, String p4, String p5, String p6, String p7, String p8, String p9) throws Throwable;
4242
}
4343
}

0 commit comments

Comments
 (0)