1
2
3
4
5
6 package dev.metaschema.core.metapath.cst.path;
7
8 import java.util.stream.Stream;
9
10 import dev.metaschema.core.metapath.cst.IExpressionVisitor;
11 import dev.metaschema.core.metapath.item.node.IFlagNodeItem;
12 import dev.metaschema.core.metapath.item.node.INodeItem;
13 import dev.metaschema.core.qname.IEnhancedQName;
14 import dev.metaschema.core.util.ObjectUtils;
15 import edu.umd.cs.findbugs.annotations.NonNull;
16
17
18
19
20
21
22
23
24 public class FlagStep
25 extends AbstractStepExpression<IFlagNodeItem> {
26
27
28
29
30
31
32
33
34
35
36 public FlagStep(@NonNull String text, @NonNull INodeTestExpression test) {
37 super(text, test);
38 }
39
40 @Override
41 public Class<IFlagNodeItem> getBaseResultType() {
42 return IFlagNodeItem.class;
43 }
44
45 @Override
46 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
47 return visitor.visitFlagStep(this, context);
48 }
49
50 @Override
51 protected Stream<? extends IFlagNodeItem> getChildNodes(INodeItem focus) {
52 return focus.flags();
53 }
54
55 @Override
56 protected Stream<? extends IFlagNodeItem> getChildNodesWithName(
57 INodeItem focus,
58 IEnhancedQName name) {
59 return ObjectUtils.notNull(Stream.ofNullable(focus.getFlagByName(name)));
60 }
61 }