Skip to content

Commit 1302fa3

Browse files
committed
Stop resolving expressions if there is no any more expressions
1 parent 883b6db commit 1302fa3

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/main/java/net/datafaker/service/FakeValuesService.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,13 +525,18 @@ public Json jsona(String... fieldExpressions) {
525525
* {@link Faker#address()}'s {@link net.datafaker.Address#streetName()}.
526526
*/
527527
protected String resolveExpression(String expression, Object current, Faker root) {
528+
if (expression.indexOf('}') == -1 || !expression.contains("#{")) {
529+
return expression;
530+
}
528531
List<String> expressions = splitExpressions(expression);
529532
List<Supplier<String>> expressionSuppliers = new ArrayList<>(expressions.size());
530533
for (int i = 0; i < expressions.size(); i++) {
531534
// odd are expressions, even are not expressions, just strings
532535
if (i % 2 == 0) {
533536
final int index = i;
534-
expressionSuppliers.add(() -> expressions.get(index));
537+
if (!expressions.get(index).isEmpty()) {
538+
expressionSuppliers.add(() -> expressions.get(index));
539+
}
535540
continue;
536541
}
537542
String expr = expressions.get(i);
@@ -611,7 +616,9 @@ private static List<String> splitExpressions(String expression) {
611616
i++;
612617
}
613618
}
614-
result.add(start < expression.length() ? expression.substring(start) : "");
619+
if (start < expression.length()) {
620+
result.add(expression.substring(start));
621+
}
615622
EXPRESSION_2_SPLITTED.put(expression, result);
616623
return result;
617624
}
@@ -630,6 +637,9 @@ private static List<String> splitExpressions(String expression) {
630637
private Object resolveExpression(String directive, String[] args, Object current, Faker root) {
631638
// name.name (resolve locally)
632639
// Name.first_name (resolve to faker.name().firstName())
640+
if (directive.trim().isEmpty()) {
641+
return directive;
642+
}
633643
final boolean dotDirective = isDotDirective(directive);
634644
final String simpleDirective = (dotDirective || current == null)
635645
? directive

0 commit comments

Comments
 (0)