1
2
3
4
5
6 package dev.metaschema.core.model.constraint.impl;
7
8 import dev.metaschema.core.datatype.markup.MarkupMultiline;
9 import dev.metaschema.core.metapath.IMetapathExpression;
10 import dev.metaschema.core.model.ISource;
11 import dev.metaschema.core.model.constraint.ILet;
12 import dev.metaschema.core.qname.IEnhancedQName;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14 import edu.umd.cs.findbugs.annotations.Nullable;
15
16
17
18
19
20
21 @SuppressWarnings("PMD.DataClass")
22 public class DefaultLet implements ILet {
23 @SuppressWarnings("PMD.AvoidUsingVolatile")
24 @Nullable
25 private volatile String cachedIdentifier;
26 @NonNull
27 private final IEnhancedQName name;
28 @NonNull
29 private final IMetapathExpression valueExpression;
30 @NonNull
31 private final ISource source;
32 @Nullable
33 private final MarkupMultiline remarks;
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public DefaultLet(
48 @NonNull IEnhancedQName name,
49 @NonNull IMetapathExpression metapath,
50 @NonNull ISource source,
51 @Nullable MarkupMultiline remarks) {
52 this.name = name;
53 this.valueExpression = metapath;
54 this.source = source;
55 this.remarks = remarks;
56 }
57
58 @Override
59 public String getInternalIdentifier() {
60 String result = cachedIdentifier;
61 if (result == null) {
62 result = ILet.super.getInternalIdentifier();
63 cachedIdentifier = result;
64 }
65 return result;
66 }
67
68 @Override
69 public IEnhancedQName getName() {
70 return name;
71 }
72
73 @Override
74 public IMetapathExpression getValueExpression() {
75 return valueExpression;
76 }
77
78 @Override
79 @NonNull
80 public ISource getSource() {
81 return source;
82 }
83
84 @Override
85 public MarkupMultiline getRemarks() {
86 return remarks;
87 }
88 }