Skip to content

Commit e1732ba

Browse files
committed
[Java] Remove GlueBase
The split between java and java8 necessitated a glue base interface to store lambda glue classes in the java backend. As java and java8 have been merged this class is no longer needed. Instead lambda glue steps now extend LambdaGlue.
1 parent 913942a commit e1732ba

File tree

6 files changed

+13
-21
lines changed

6 files changed

+13
-21
lines changed

java/src/main/groovy/lambda.java.gsp

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import io.cucumber.java.api.StepdefBody.A9;
1313

1414
import io.cucumber.java.LambdaGlueRegistry;
1515
import io.cucumber.java.Java8StepDefinition;
16-
import io.cucumber.java.LambdaGlueBase;
16+
import io.cucumber.java.LambdaGlue;
1717

1818
/**
1919
* ${locale.getDisplayLanguage()}
@@ -34,7 +34,7 @@ import io.cucumber.java.LambdaGlueBase;
3434
* attempt to transform the data table or doc string to the the
3535
* type of last argument.
3636
*/
37-
public interface ${className} extends LambdaGlueBase {
37+
public interface ${className} extends LambdaGlue {
3838
<% i18n.stepKeywords.findAll { !it.contains('*') && !it.matches("^\\d.*") }.sort().unique().each { kw -> %>
3939
/**
4040
* Creates a new step definition.

java/src/main/java/io/cucumber/java/Function.java

-7
This file was deleted.

java/src/main/java/io/cucumber/java/GlueBase.java

-4
This file was deleted.

java/src/main/java/io/cucumber/java/JavaBackend.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.ArrayList;
2626
import java.util.Collection;
2727
import java.util.List;
28+
import java.util.function.Function;
2829

2930
import static io.cucumber.core.io.MultiLoader.packageName;
3031
import static io.cucumber.java.ObjectFactoryLoader.loadObjectFactory;
@@ -41,7 +42,7 @@ public class JavaBackend implements Backend, LambdaGlueRegistry {
4142

4243
private final MethodScanner methodScanner;
4344
private Glue glue;
44-
private List<Class<? extends GlueBase>> glueBaseClasses = new ArrayList<Class<? extends GlueBase>>();
45+
private List<Class<? extends LambdaGlue>> lambdaGlueClasses = new ArrayList<>();
4546

4647
/**
4748
* The constructor called by reflection by default.
@@ -73,14 +74,14 @@ public void loadGlue(Glue glue, List<String> gluePaths) {
7374

7475
// Scan for Java8 style glue (lambdas)
7576
for (final String gluePath : gluePaths) {
76-
Collection<Class<? extends GlueBase>> glueDefinerClasses = classFinder.getDescendants(GlueBase.class, packageName(gluePath));
77-
for (final Class<? extends GlueBase> glueClass : glueDefinerClasses) {
77+
Collection<Class<? extends LambdaGlue>> glueDefinerClasses = classFinder.getDescendants(LambdaGlue.class, packageName(gluePath));
78+
for (final Class<? extends LambdaGlue> glueClass : glueDefinerClasses) {
7879
if (glueClass.isInterface()) {
7980
continue;
8081
}
8182

8283
if (objectFactory.addClass(glueClass)) {
83-
glueBaseClasses.add(glueClass);
84+
lambdaGlueClasses.add(glueClass);
8485
}
8586
}
8687
}
@@ -107,8 +108,8 @@ public void buildWorld() {
107108
// in the constructor.
108109
try {
109110
INSTANCE.set(this);
110-
for (Class<? extends GlueBase> glueBaseClass : glueBaseClasses) {
111-
objectFactory.getInstance(glueBaseClass);
111+
for (Class<? extends LambdaGlue> lambdaGlueClass: lambdaGlueClasses) {
112+
objectFactory.getInstance(lambdaGlueClass);
112113
}
113114
} finally {
114115
INSTANCE.remove();

java/src/main/java/io/cucumber/java/LambdaGlueBase.java renamed to java/src/main/java/io/cucumber/java/LambdaGlue.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import io.cucumber.java.api.HookBody;
44
import io.cucumber.java.api.HookNoArgsBody;
55

6-
public interface LambdaGlueBase extends GlueBase {
6+
public interface LambdaGlue {
77

88
String[] EMPTY_TAG_EXPRESSIONS = new String[0];
99
long NO_TIMEOUT = 0;

java/src/main/java/io/cucumber/java/LambdaGlueRegistry.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import io.cucumber.core.backend.HookDefinition;
55
import io.cucumber.core.backend.StepDefinition;
66

7+
import java.util.function.Function;
8+
79
public interface LambdaGlueRegistry {
8-
ThreadLocal<LambdaGlueRegistry> INSTANCE = new ThreadLocal<LambdaGlueRegistry>();
10+
ThreadLocal<LambdaGlueRegistry> INSTANCE = new ThreadLocal<>();
911

1012
void addStepDefinition(Function<TypeRegistry, StepDefinition> stepDefinition);
1113

0 commit comments

Comments
 (0)