Skip to content

Commit 0553bb1

Browse files
committed
Refactor and optimize source code
1 parent 68f8ff5 commit 0553bb1

19 files changed

+77
-68
lines changed

src/main/java/com/relogiclabs/json/schema/function/CoreFunctions2.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.Arrays;
1616
import java.util.function.Supplier;
1717

18-
import static com.relogiclabs.json.schema.internal.util.StringHelper.join;
18+
import static com.relogiclabs.json.schema.internal.util.StringHelper.joinWith;
1919
import static com.relogiclabs.json.schema.message.ErrorCode.ENUM01;
2020
import static com.relogiclabs.json.schema.message.ErrorCode.ENUM02;
2121
import static com.relogiclabs.json.schema.message.ErrorCode.MAXI01;
@@ -46,7 +46,7 @@ public boolean _enum(JString target, JString... items) {
4646
var list = Arrays.asList(items);
4747
if(!list.contains(target)) return failWith(new JsonSchemaException(
4848
new ErrorDetail(ENUM01, "String is not in enum list"),
49-
new ExpectedDetail(function, "string in list ", join(list, ", ", "[", "]")),
49+
new ExpectedDetail(function, "string in list ", joinWith(list, ", ", "[", "]")),
5050
new ActualDetail(target, "string ", target, " is not found in list")));
5151
return true;
5252
}
@@ -55,7 +55,7 @@ public boolean _enum(JNumber target, JNumber... items) {
5555
var list = Arrays.asList(items);
5656
if(!list.contains(target)) return failWith(new JsonSchemaException(
5757
new ErrorDetail(ENUM02, "Number is not in enum list"),
58-
new ExpectedDetail(function, "number in list ", join(list, ", ", "[", "]")),
58+
new ExpectedDetail(function, "number in list ", joinWith(list, ", ", "[", "]")),
5959
new ActualDetail(target, "number ", target, " is not found in list")));
6060
return true;
6161
}

src/main/java/com/relogiclabs/json/schema/internal/message/ActualHelper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ public static ActualDetail asValueMismatch(JNode node) {
2222
return new ActualDetail(node, "found ", node.getOutline());
2323
}
2424

25+
public static ActualDetail asGeneralValueMismatch(JNode node) {
26+
return new ActualDetail(node, "found ", node.getOutline());
27+
}
28+
2529
public static ActualDetail asInvalidNonCompositeType(JNode node) {
2630
return new ActualDetail(node, "found non-composite ", getTypeName(node),
2731
" value ", node.getOutline());

src/main/java/com/relogiclabs/json/schema/internal/message/ExpectedHelper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ public static ExpectedDetail asValueMismatch(JNode node) {
2424
return new ExpectedDetail(node, "value ", node.getOutline());
2525
}
2626

27+
public static ExpectedDetail asGeneralValueMismatch(JNode node) {
28+
return new ExpectedDetail(node, "a value of ", node.getOutline());
29+
}
30+
2731
public static ExpectedDetail asDataTypeMismatch(JDataType dataType) {
2832
return new ExpectedDetail(dataType, "data type ", dataType.toString(true));
2933
}

src/main/java/com/relogiclabs/json/schema/internal/tree/JsonTreeVisitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23-
import static com.relogiclabs.json.schema.internal.tree.TreeHelper.checkForDuplicate;
23+
import static com.relogiclabs.json.schema.internal.tree.TreeHelper.requireUniqueness;
2424
import static com.relogiclabs.json.schema.internal.util.StringHelper.toEncoded;
2525
import static com.relogiclabs.json.schema.internal.util.StringHelper.unquote;
2626
import static com.relogiclabs.json.schema.message.ErrorCode.PROP03;
@@ -56,7 +56,7 @@ public JNode visitObject(JsonParser.ObjectContext ctx) {
5656
return new JObjectBuilder()
5757
.relations(relations)
5858
.context(new Context(ctx, runtime))
59-
.properties(checkForDuplicate(ctx.property().stream()
59+
.properties(requireUniqueness(ctx.property().stream()
6060
.map(p -> (JProperty) visit(p)).toList(), PROP03))
6161
.build();
6262
}

src/main/java/com/relogiclabs/json/schema/internal/tree/SchemaTreeVisitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
import java.util.List;
4747
import java.util.Map;
4848

49-
import static com.relogiclabs.json.schema.internal.tree.TreeHelper.checkForDuplicate;
49+
import static com.relogiclabs.json.schema.internal.tree.TreeHelper.requireUniqueness;
5050
import static com.relogiclabs.json.schema.internal.util.StringHelper.toEncoded;
5151
import static com.relogiclabs.json.schema.internal.util.StringHelper.unquote;
5252
import static com.relogiclabs.json.schema.message.ErrorCode.PROP04;
@@ -187,7 +187,7 @@ public JNode visitObject(SchemaParser.ObjectContext ctx) {
187187
return new JObjectBuilder()
188188
.relations(relations)
189189
.context(new Context(ctx, runtime))
190-
.properties(checkForDuplicate(ctx.property().stream()
190+
.properties(requireUniqueness(ctx.property().stream()
191191
.map(c -> (JProperty) visit(c)).toList(), PROP04))
192192
.build();
193193
}

src/main/java/com/relogiclabs/json/schema/internal/tree/TreeHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import static java.util.stream.Collectors.toMap;
1414

1515
public final class TreeHelper {
16-
public static List<JProperty> checkForDuplicate(List<JProperty> list, String errorCode) {
16+
public static List<JProperty> requireUniqueness(List<JProperty> list, String errorCode) {
1717
list.stream().collect(toMap(JProperty::getKey, Function.identity(),
1818
(p1, p2) -> halt(new DuplicatePropertyKeyException(formatForJson(errorCode,
1919
concat("Multiple key with name ", quote(p2.getKey()), " found"), p2)))

src/main/java/com/relogiclabs/json/schema/internal/util/CollectionHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public static <T> void addToList(Collection<T> source, Collection<? extends T>..
5454
for(var c : collections) if(c != null) source.addAll(c);
5555
}
5656

57-
public static <T> T getLast(List<T> list) {
58-
return list != null && !list.isEmpty() ? list.get(list.size() - 1) : null;
57+
public static <T> T tryGetLast(List<T> list) {
58+
return list.isEmpty() ? null : list.get(list.size() - 1);
5959
}
6060
}

src/main/java/com/relogiclabs/json/schema/internal/util/StreamHelper.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
package com.relogiclabs.json.schema.internal.util;
22

3-
import java.util.function.Predicate;
43
import java.util.stream.Stream;
54

65
public final class StreamHelper {
76
public static <T> T halt(RuntimeException exception) {
87
throw exception;
98
}
109

11-
public static Predicate<Boolean> allTrue() {
12-
return t -> t;
13-
}
14-
15-
public static boolean allTrue(Stream<Boolean> stream) {
16-
// When eagerly check all, no early return
10+
public static boolean forEachTrue(Stream<Boolean> stream) {
11+
// When no short-circuit evaluation with no early return
1712
boolean result = true;
1813
for(var r : iterable(stream)) result &= r;
1914
return result;
2015
}
2116

22-
public static Predicate<Boolean> anyTrue() {
23-
return t -> t;
24-
}
25-
2617
public static <T> int count(Stream<T> stream) {
27-
// When Java stream count is not applicable
18+
// Java stream count ignore exceptions
2819
int counter = 0;
2920
for(var ignored : iterable(stream)) counter++;
3021
return counter;

src/main/java/com/relogiclabs/json/schema/internal/util/StringHelper.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,12 @@
66
import java.util.Collection;
77

88
import static java.util.stream.Collectors.joining;
9-
import static org.apache.commons.lang3.StringUtils.left;
10-
import static org.apache.commons.lang3.StringUtils.right;
119

1210
public final class StringHelper {
1311
private StringHelper() {
1412
throw new UnsupportedOperationException();
1513
}
1614

17-
public static String createOutline(String target, int length) {
18-
int front = 2 * length / 3;
19-
int back = 1 * length / 3;
20-
if(front + back >= target.length()) return target;
21-
return left(target, front) + "..." + right(target, back);
22-
}
23-
2415
public static String toEncoded(String target)
2516
{
2617
var builder = new StringBuilder();
@@ -65,6 +56,12 @@ public static String join(Collection<? extends JNode> list, String delimiter,
6556
return result;
6657
}
6758

59+
public static String joinWith(Collection<? extends JNode> list, String delimiter,
60+
String prefix, String suffix) {
61+
String result = list.stream().map(JNode::toString).collect(joining(delimiter));
62+
return prefix + result + suffix;
63+
}
64+
6865
public static String join(Collection<? extends JNode> list, String delimiter, String prefix) {
6966
return join(list, delimiter, prefix, "");
7067
}

src/main/java/com/relogiclabs/json/schema/message/MessageFormatter.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import lombok.Setter;
88

99
import static org.apache.commons.lang3.StringUtils.capitalize;
10+
import static org.apache.commons.lang3.StringUtils.left;
11+
import static org.apache.commons.lang3.StringUtils.right;
1012

1113
@Getter
1214
public abstract class MessageFormatter {
@@ -47,6 +49,13 @@ protected MessageFormatter(String summary, String expected, String actual) {
4749

4850
public abstract String format(ErrorDetail error, ExpectedDetail expected, ActualDetail actual);
4951

52+
public String createOutline(String target) {
53+
int front = 2 * outlineLength / 3;
54+
int back = 1 * outlineLength / 3;
55+
if(front + back >= target.length()) return target;
56+
return left(target, front) + "..." + right(target, back);
57+
}
58+
5059
private static final class ValidationFormatter extends MessageFormatter {
5160
private ValidationFormatter(String summary, String expected, String actual) {
5261
super(summary, expected, actual);

0 commit comments

Comments
 (0)