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.IModelNodeItem;
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 @SuppressWarnings("rawtypes")
25 public class ModelInstanceStep
26 extends AbstractStepExpression<IModelNodeItem> {
27
28
29
30
31
32
33
34
35
36
37 public ModelInstanceStep(@NonNull String text, @NonNull INodeTestExpression test) {
38 super(text, test);
39 }
40
41 @Override
42 public Class<IModelNodeItem> getBaseResultType() {
43 return IModelNodeItem.class;
44 }
45
46 @Override
47 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
48 return visitor.visitModelInstanceStep(this, context);
49 }
50
51 @Override
52 protected Stream<? extends IModelNodeItem<?, ?>> getChildNodes(INodeItem focus) {
53 return focus.modelItems();
54 }
55
56 @Override
57 protected Stream<? extends IModelNodeItem<?, ?>> getChildNodesWithName(
58 INodeItem focus,
59 IEnhancedQName name) {
60 return ObjectUtils.notNull(focus.getModelItemsByName(name).stream());
61 }
62 }