1
2
3
4
5
6 package gov.nist.secauto.metaschema.core.model.constraint;
7
8 import gov.nist.secauto.metaschema.core.metapath.IMetapathExpression;
9 import gov.nist.secauto.metaschema.core.model.constraint.impl.DefaultExpectConstraint;
10 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
11
12 import edu.umd.cs.findbugs.annotations.NonNull;
13
14
15
16
17
18
19
20 public interface IExpectConstraint extends IConfigurableMessageConstraint {
21 @Override
22 default Type getType() {
23 return Type.EXPECT;
24 }
25
26
27
28
29
30
31 @NonNull
32 IMetapathExpression getTest();
33
34 @Override
35 default <T, R> R accept(IConstraintVisitor<T, R> visitor, T state) {
36 return visitor.visitExpectConstraint(this, state);
37 }
38
39
40
41
42
43
44 @NonNull
45 static Builder builder() {
46 return new Builder();
47 }
48
49
50
51
52 final class Builder
53 extends AbstractConfigurableMessageConstraintBuilder<Builder, IExpectConstraint> {
54 private IMetapathExpression test;
55
56 private Builder() {
57
58 }
59
60
61
62
63
64
65
66
67 @NonNull
68 public Builder test(@NonNull IMetapathExpression test) {
69 this.test = test;
70 return this;
71 }
72
73 @Override
74 protected Builder getThis() {
75 return this;
76 }
77
78 @Override
79 protected void validate() {
80 super.validate();
81
82 ObjectUtils.requireNonNull(getTest());
83 }
84
85 private IMetapathExpression getTest() {
86 return test;
87 }
88
89 @Override
90 protected IExpectConstraint newInstance() {
91 return new DefaultExpectConstraint(
92 getId(),
93 getFormalName(),
94 getDescription(),
95 ObjectUtils.notNull(getSource()),
96 getLevel(),
97 getTarget(),
98 getProperties(),
99 ObjectUtils.requireNonNull(getTest()),
100 getMessage(),
101 getRemarks());
102 }
103 }
104 }