-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJsonPathAst.java
More file actions
79 lines (64 loc) · 2.49 KB
/
JsonPathAst.java
File metadata and controls
79 lines (64 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package json.java21.jsonpath;
import java.util.List;
import java.util.Objects;
record JsonPathAst(List<Step> steps) {
JsonPathAst {
Objects.requireNonNull(steps, "steps must not be null");
steps.forEach(s -> Objects.requireNonNull(s, "step must not be null"));
}
sealed interface Step permits
Step.Child,
Step.Wildcard,
Step.RecursiveDescent,
Step.ArrayIndex,
Step.ArraySlice,
Step.Union,
Step.Filter,
Step.ScriptIndex {
record Child(String name) implements Step {
public Child {
Objects.requireNonNull(name, "name must not be null");
}
}
record Wildcard() implements Step {}
record RecursiveDescent(RecursiveSelector selector) implements Step {
public RecursiveDescent {
Objects.requireNonNull(selector, "selector must not be null");
}
}
sealed interface RecursiveSelector permits RecursiveSelector.Name, RecursiveSelector.Wildcard {
record Name(String name) implements RecursiveSelector {
public Name {
Objects.requireNonNull(name, "name must not be null");
}
}
record Wildcard() implements RecursiveSelector {}
}
record ArrayIndex(int index) implements Step {}
record ArraySlice(Integer startInclusive, Integer endExclusive) implements Step {}
record Union(List<Selector> selectors) implements Step {
public Union {
Objects.requireNonNull(selectors, "selectors must not be null");
selectors.forEach(s -> Objects.requireNonNull(s, "selector must not be null"));
}
}
sealed interface Selector permits Selector.Name, Selector.Index {
record Name(String name) implements Selector {
public Name {
Objects.requireNonNull(name, "name must not be null");
}
}
record Index(int index) implements Selector {}
}
record Filter(BoolExpr predicate) implements Step {
public Filter {
Objects.requireNonNull(predicate, "predicate must not be null");
}
}
record ScriptIndex(ValueExpr expr) implements Step {
public ScriptIndex {
Objects.requireNonNull(expr, "expr must not be null");
}
}
}
}