1
2
3
4
5
6 package dev.metaschema.core.metapath.cst;
7
8 import java.util.List;
9
10 import dev.metaschema.core.metapath.DynamicContext;
11 import dev.metaschema.core.metapath.IExpression;
12 import dev.metaschema.core.metapath.item.ISequence;
13 import dev.metaschema.core.qname.IEnhancedQName;
14 import dev.metaschema.core.util.CollectionUtil;
15 import edu.umd.cs.findbugs.annotations.NonNull;
16
17
18
19
20
21
22 public class VariableReference
23 extends AbstractExpression {
24 @NonNull
25 private final IEnhancedQName name;
26
27
28
29
30
31
32
33
34
35 public VariableReference(
36 @NonNull String text,
37 @NonNull IEnhancedQName name) {
38 super(text);
39 this.name = name;
40 }
41
42
43
44
45
46
47 @NonNull
48 public IEnhancedQName getName() {
49 return name;
50 }
51
52 @Override
53 public List<? extends IExpression> getChildren() {
54 return CollectionUtil.emptyList();
55 }
56
57 @SuppressWarnings("null")
58 @Override
59 public String toCSTString() {
60 return String.format("%s[name=%s]", getClass().getName(), getName());
61 }
62
63 @Override
64 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
65 return visitor.visitVariableReference(this, context);
66 }
67
68 @Override
69 protected ISequence<?> evaluate(DynamicContext dynamicContext, ISequence<?> focus) {
70 return dynamicContext.getVariableValue(getName());
71 }
72 }