1
2
3
4
5
6 package dev.metaschema.core.metapath.cst.path;
7
8 import java.util.Collections;
9 import java.util.List;
10 import java.util.stream.Stream;
11
12 import dev.metaschema.core.metapath.IExpression;
13 import dev.metaschema.core.metapath.item.node.INodeItem;
14 import dev.metaschema.core.util.ObjectUtils;
15 import edu.umd.cs.findbugs.annotations.NonNull;
16
17
18
19
20
21
22
23 public interface INodeTestExpression extends IExpression {
24 @SuppressWarnings("null")
25 @Override
26 default List<? extends IExpression> getChildren() {
27 return Collections.emptyList();
28 }
29
30 @Override
31 default Class<INodeItem> getBaseResultType() {
32 return INodeItem.class;
33 }
34
35 @Override
36 default Class<INodeItem> getStaticResultType() {
37 return getBaseResultType();
38 }
39
40
41
42
43
44
45
46
47
48
49
50
51
52 @NonNull
53 default <T extends INodeItem> Stream<T> filterStream(@NonNull Stream<T> stream) {
54 return ObjectUtils.notNull(stream.filter(this::match));
55 }
56
57
58
59
60
61
62
63
64 boolean match(@NonNull INodeItem item);
65 }