Skip to content

Commit c1f4ced

Browse files
committed
Mark API as public
1 parent f19a858 commit c1f4ced

File tree

7 files changed

+72
-67
lines changed

7 files changed

+72
-67
lines changed

java/src/main/java/io/cucumber/cucumberexpressions/Ast.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package io.cucumber.cucumberexpressions;
22

3+
import org.apiguardian.api.API;
4+
35
import java.util.List;
46
import java.util.Objects;
57
import java.util.StringJoiner;
68

79
import static java.util.Objects.requireNonNull;
810
import static java.util.stream.Collectors.joining;
11+
import static org.apiguardian.api.API.Status.EXPERIMENTAL;
912

13+
@API(since = "18.1", status = EXPERIMENTAL)
1014
public final class Ast {
1115

1216
public static final char escapeCharacter = '\\';
@@ -25,29 +29,29 @@ interface Located {
2529

2630
public static final class Node implements Located {
2731

28-
private final Type type;
32+
private final NodeType type;
2933
private final List<Node> nodes;
3034
private final String token;
3135
private final int start;
3236
private final int end;
3337

34-
Node(Type type, int start, int end, String token) {
38+
Node(NodeType type, int start, int end, String token) {
3539
this(type, start, end, null, requireNonNull(token));
3640
}
3741

38-
Node(Type type, int start, int end, List<Node> nodes) {
42+
Node(NodeType type, int start, int end, List<Node> nodes) {
3943
this(type, start, end, requireNonNull(nodes), null);
4044
}
4145

42-
private Node(Type type, int start, int end, List<Node> nodes, String token) {
46+
private Node(NodeType type, int start, int end, List<Node> nodes, String token) {
4347
this.type = requireNonNull(type);
4448
this.nodes = nodes;
4549
this.token = token;
4650
this.start = start;
4751
this.end = end;
4852
}
4953

50-
public enum Type {
54+
public enum NodeType {
5155
TEXT_NODE,
5256
OPTIONAL_NODE,
5357
ALTERNATION_NODE,
@@ -71,7 +75,7 @@ public List<Node> nodes() {
7175
return nodes;
7276
}
7377

74-
public Type type() {
78+
public NodeType type() {
7579
return type;
7680
}
7781

@@ -155,11 +159,11 @@ public int hashCode() {
155159
static final class Token implements Located {
156160

157161
final String text;
158-
final Token.Type type;
162+
final TokenType type;
159163
final int start;
160164
final int end;
161165

162-
Token(String text, Token.Type type, int start, int end) {
166+
Token(String text, TokenType type, int start, int end) {
163167
this.text = requireNonNull(text);
164168
this.type = requireNonNull(type);
165169
this.start = start;
@@ -182,23 +186,23 @@ static boolean canEscape(Integer token) {
182186
return false;
183187
}
184188

185-
static Type typeOf(Integer token) {
189+
static TokenType typeOf(Integer token) {
186190
if (Character.isWhitespace(token)) {
187-
return Type.WHITE_SPACE;
191+
return TokenType.WHITE_SPACE;
188192
}
189193
switch (token) {
190194
case (int) alternationCharacter:
191-
return Type.ALTERNATION;
195+
return TokenType.ALTERNATION;
192196
case (int) beginParameterCharacter:
193-
return Type.BEGIN_PARAMETER;
197+
return TokenType.BEGIN_PARAMETER;
194198
case (int) endParameterCharacter:
195-
return Type.END_PARAMETER;
199+
return TokenType.END_PARAMETER;
196200
case (int) beginOptionalCharacter:
197-
return Type.BEGIN_OPTIONAL;
201+
return TokenType.BEGIN_OPTIONAL;
198202
case (int) endOptionalCharacter:
199-
return Type.END_OPTIONAL;
203+
return TokenType.END_OPTIONAL;
200204
}
201-
return Type.TEXT;
205+
return TokenType.TEXT;
202206
}
203207

204208
static boolean isEscapeCharacter(int token) {
@@ -241,7 +245,7 @@ public String toString() {
241245
.toString();
242246
}
243247

244-
enum Type {
248+
enum TokenType {
245249
START_OF_LINE,
246250
END_OF_LINE,
247251
WHITE_SPACE,
@@ -255,11 +259,11 @@ enum Type {
255259
private final String symbol;
256260
private final String purpose;
257261

258-
Type() {
262+
TokenType() {
259263
this(null, null);
260264
}
261265

262-
Type(String symbol, String purpose) {
266+
TokenType(String symbol, String purpose) {
263267
this.symbol = symbol;
264268
this.purpose = purpose;
265269
}

java/src/main/java/io/cucumber/cucumberexpressions/CucumberExpression.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.cucumber.cucumberexpressions;
22

33
import io.cucumber.cucumberexpressions.Ast.Node;
4+
import io.cucumber.cucumberexpressions.Ast.Node.NodeType;
45
import org.apiguardian.api.API;
56

67
import java.lang.reflect.Type;
@@ -9,16 +10,14 @@
910
import java.util.function.Function;
1011
import java.util.regex.Pattern;
1112

12-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.OPTIONAL_NODE;
13-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.PARAMETER_NODE;
14-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.TEXT_NODE;
13+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.OPTIONAL_NODE;
14+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.PARAMETER_NODE;
15+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.TEXT_NODE;
1516
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createAlternativeMayNotBeEmpty;
1617
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createAlternativeMayNotExclusivelyContainOptionals;
17-
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createInvalidParameterTypeName;
1818
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createOptionalIsNotAllowedInOptional;
1919
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createOptionalMayNotBeEmpty;
2020
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createParameterIsNotAllowedInOptional;
21-
import static io.cucumber.cucumberexpressions.ParameterType.isValidParameterTypeName;
2221
import static io.cucumber.cucumberexpressions.RegexpUtils.escapeRegex;
2322
import static io.cucumber.cucumberexpressions.UndefinedParameterTypeException.createUndefinedParameterType;
2423
import static java.util.stream.Collectors.joining;
@@ -130,8 +129,8 @@ private void assertNoOptionals(Node node,
130129
assertNoNodeOfType(OPTIONAL_NODE, node, createNodeContainedAnOptionalException);
131130
}
132131

133-
private void assertNoNodeOfType(Node.Type nodeType, Node node,
134-
Function<Node, CucumberExpressionException> createException) {
132+
private void assertNoNodeOfType(NodeType nodeType, Node node,
133+
Function<Node, CucumberExpressionException> createException) {
135134
node.nodes()
136135
.stream()
137136
.filter(astNode -> nodeType.equals(astNode.type()))

java/src/main/java/io/cucumber/cucumberexpressions/CucumberExpressionException.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import io.cucumber.cucumberexpressions.Ast.Located;
44
import io.cucumber.cucumberexpressions.Ast.Node;
55
import io.cucumber.cucumberexpressions.Ast.Token;
6-
import io.cucumber.cucumberexpressions.Ast.Token.Type;
6+
import io.cucumber.cucumberexpressions.Ast.Token.TokenType;
77
import org.apiguardian.api.API;
88

99
@API(status = API.Status.STABLE)
@@ -17,8 +17,8 @@ public class CucumberExpressionException extends RuntimeException {
1717
super(message, cause);
1818
}
1919

20-
static CucumberExpressionException createMissingEndToken(String expression, Type beginToken, Type endToken,
21-
Token current) {
20+
static CucumberExpressionException createMissingEndToken(String expression, TokenType beginToken, TokenType endToken,
21+
Token current) {
2222
return new CucumberExpressionException(message(
2323
current.start(),
2424
expression,

java/src/main/java/io/cucumber/cucumberexpressions/CucumberExpressionParser.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@
22

33
import io.cucumber.cucumberexpressions.Ast.Node;
44
import io.cucumber.cucumberexpressions.Ast.Token;
5-
import io.cucumber.cucumberexpressions.Ast.Token.Type;
5+
import io.cucumber.cucumberexpressions.Ast.Token.TokenType;
66

77
import java.util.ArrayList;
88
import java.util.Arrays;
99
import java.util.List;
1010

11-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.ALTERNATION_NODE;
12-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.ALTERNATIVE_NODE;
13-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.EXPRESSION_NODE;
14-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.OPTIONAL_NODE;
15-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.PARAMETER_NODE;
16-
import static io.cucumber.cucumberexpressions.Ast.Node.Type.TEXT_NODE;
17-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.ALTERNATION;
18-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.BEGIN_OPTIONAL;
19-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.BEGIN_PARAMETER;
20-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.END_OF_LINE;
21-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.END_OPTIONAL;
22-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.END_PARAMETER;
23-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.START_OF_LINE;
24-
import static io.cucumber.cucumberexpressions.Ast.Token.Type.WHITE_SPACE;
11+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.ALTERNATION_NODE;
12+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.ALTERNATIVE_NODE;
13+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.EXPRESSION_NODE;
14+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.OPTIONAL_NODE;
15+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.PARAMETER_NODE;
16+
import static io.cucumber.cucumberexpressions.Ast.Node.NodeType.TEXT_NODE;
17+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.ALTERNATION;
18+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.BEGIN_OPTIONAL;
19+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.BEGIN_PARAMETER;
20+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.END_OF_LINE;
21+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.END_OPTIONAL;
22+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.END_PARAMETER;
23+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.START_OF_LINE;
24+
import static io.cucumber.cucumberexpressions.Ast.Token.TokenType.WHITE_SPACE;
2525
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createAlternationNotAllowedInOptional;
2626
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createInvalidParameterTypeName;
2727
import static io.cucumber.cucumberexpressions.CucumberExpressionException.createMissingEndToken;
@@ -197,9 +197,9 @@ private Result(int consumed, List<Node> ast) {
197197
}
198198

199199
private static Parser parseBetween(
200-
Node.Type type,
201-
Type beginToken,
202-
Type endToken,
200+
Node.NodeType type,
201+
TokenType beginToken,
202+
TokenType endToken,
203203
List<Parser> parsers) {
204204
return (expression, tokens, current) -> {
205205
if (!lookingAt(tokens, current, beginToken)) {
@@ -225,7 +225,7 @@ private static Result parseTokensUntil(
225225
List<Parser> parsers,
226226
List<Token> tokens,
227227
int startAt,
228-
Type... endTokens) {
228+
TokenType... endTokens) {
229229
int current = startAt;
230230
int size = tokens.size();
231231
List<Node> ast = new ArrayList<>();
@@ -259,16 +259,16 @@ private static Result parseToken(String expression, List<Parser> parsers,
259259
throw new IllegalStateException("No eligible parsers for " + tokens);
260260
}
261261

262-
private static boolean lookingAtAny(List<Token> tokens, int at, Type... tokenTypes) {
263-
for (Type tokeType : tokenTypes) {
262+
private static boolean lookingAtAny(List<Token> tokens, int at, TokenType... tokenTypes) {
263+
for (TokenType tokeType : tokenTypes) {
264264
if (lookingAt(tokens, at, tokeType)) {
265265
return true;
266266
}
267267
}
268268
return false;
269269
}
270270

271-
private static boolean lookingAt(List<Token> tokens, int at, Type token) {
271+
private static boolean lookingAt(List<Token> tokens, int at, TokenType token) {
272272
if (at < 0) {
273273
// If configured correctly this will never happen
274274
// Keep for completeness

java/src/main/java/io/cucumber/cucumberexpressions/CucumberExpressionTokenizer.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.cucumber.cucumberexpressions;
22

33
import io.cucumber.cucumberexpressions.Ast.Token;
4-
import io.cucumber.cucumberexpressions.Ast.Token.Type;
4+
import io.cucumber.cucumberexpressions.Ast.Token.TokenType;
55

66
import java.util.ArrayList;
77
import java.util.Iterator;
@@ -30,8 +30,8 @@ private static class TokenIterator implements Iterator<Token> {
3030
private final OfInt codePoints;
3131

3232
private StringBuilder buffer = new StringBuilder();
33-
private Type previousTokenType = null;
34-
private Type currentTokenType = Type.START_OF_LINE;
33+
private TokenType previousTokenType = null;
34+
private TokenType currentTokenType = TokenType.START_OF_LINE;
3535
private boolean treatAsText;
3636
private int bufferStartIndex;
3737
private int escaped;
@@ -41,9 +41,9 @@ private static class TokenIterator implements Iterator<Token> {
4141
this.codePoints = expression.codePoints().iterator();
4242
}
4343

44-
private Token convertBufferToToken(Type tokenType) {
44+
private Token convertBufferToToken(TokenType tokenType) {
4545
int escapeTokens = 0;
46-
if (tokenType == Type.TEXT) {
46+
if (tokenType == TokenType.TEXT) {
4747
escapeTokens = escaped;
4848
escaped = 0;
4949
}
@@ -59,33 +59,33 @@ private void advanceTokenTypes() {
5959
currentTokenType = null;
6060
}
6161

62-
private Type tokenTypeOf(Integer token, boolean treatAsText) {
62+
private TokenType tokenTypeOf(Integer token, boolean treatAsText) {
6363
if (!treatAsText) {
6464
return Token.typeOf(token);
6565
}
6666
if (Token.canEscape(token)) {
67-
return Type.TEXT;
67+
return TokenType.TEXT;
6868
}
6969
throw createCantEscape(expression, bufferStartIndex + buffer.codePointCount(0, buffer.length()) + escaped);
7070
}
7171

72-
private boolean shouldContinueTokenType(Type previousTokenType,
73-
Type currentTokenType) {
72+
private boolean shouldContinueTokenType(TokenType previousTokenType,
73+
TokenType currentTokenType) {
7474
return currentTokenType == previousTokenType
75-
&& (currentTokenType == Type.WHITE_SPACE || currentTokenType == Type.TEXT);
75+
&& (currentTokenType == TokenType.WHITE_SPACE || currentTokenType == TokenType.TEXT);
7676
}
7777

7878
@Override
7979
public boolean hasNext() {
80-
return previousTokenType != Type.END_OF_LINE;
80+
return previousTokenType != TokenType.END_OF_LINE;
8181
}
8282

8383
@Override
8484
public Token next() {
8585
if (!hasNext()) {
8686
throw new NoSuchElementException();
8787
}
88-
if (currentTokenType == Type.START_OF_LINE) {
88+
if (currentTokenType == TokenType.START_OF_LINE) {
8989
Token token = convertBufferToToken(currentTokenType);
9090
advanceTokenTypes();
9191
return token;
@@ -101,7 +101,7 @@ public Token next() {
101101
currentTokenType = tokenTypeOf(codePoint, treatAsText);
102102
treatAsText = false;
103103

104-
if (previousTokenType == Type.START_OF_LINE ||
104+
if (previousTokenType == TokenType.START_OF_LINE ||
105105
shouldContinueTokenType(previousTokenType, currentTokenType)) {
106106
advanceTokenTypes();
107107
buffer.appendCodePoint(codePoint);
@@ -119,7 +119,7 @@ public Token next() {
119119
return token;
120120
}
121121

122-
currentTokenType = Type.END_OF_LINE;
122+
currentTokenType = TokenType.END_OF_LINE;
123123
if (treatAsText) {
124124
throw createTheEndOfLineCanNotBeEscaped(expression);
125125
}

java/src/test/java/io/cucumber/cucumberexpressions/CucumberExpressionParserTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.cucumber.cucumberexpressions;
22

33
import io.cucumber.cucumberexpressions.Ast.Node;
4+
import io.cucumber.cucumberexpressions.Ast.Node.NodeType;
45
import org.junit.jupiter.api.extension.ParameterContext;
56
import org.junit.jupiter.params.ParameterizedTest;
67
import org.junit.jupiter.params.converter.ArgumentConversionException;
@@ -71,7 +72,7 @@ public Expectation convert(Object source, ParameterContext context) throws Argum
7172
}
7273

7374
static class YamlableNode {
74-
public Ast.Node.Type type;
75+
public NodeType type;
7576
public List<YamlableNode> nodes;
7677
public String token;
7778
public int start;

java/src/test/java/io/cucumber/cucumberexpressions/CucumberExpressionTokenizerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.cucumber.cucumberexpressions;
22

33
import io.cucumber.cucumberexpressions.Ast.Token;
4+
import io.cucumber.cucumberexpressions.Ast.Token.TokenType;
45
import org.junit.jupiter.api.extension.ParameterContext;
56
import org.junit.jupiter.params.ParameterizedTest;
67
import org.junit.jupiter.params.converter.ArgumentConversionException;
@@ -76,7 +77,7 @@ public Expectation convert(Object source, ParameterContext context) throws Argum
7677

7778
static class YamlableToken {
7879
public String text;
79-
public Token.Type type;
80+
public TokenType type;
8081
public int start;
8182
public int end;
8283

0 commit comments

Comments
 (0)