1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.model.constraint;
7   
8   import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
9   
10  import java.util.List;
11  import java.util.Map;
12  
13  import edu.umd.cs.findbugs.annotations.NonNull;
14  
15  /**
16   * A marker interface for a Metaschema valued construct (i.e. flag, field) that
17   * can be constrained using Metaschema constraints.
18   */
19  public interface IFeatureValueConstrained extends IValueConstrained {
20    /**
21     * Lazy initialize the instances for the constraints when the constraints are
22     * first accessed.
23     *
24     * @return the constraints instance
25     */
26    @NonNull
27    IValueConstrained getConstraintSupport();
28  
29    @Override
30    default ILet addLetExpression(ILet let) {
31      return getConstraintSupport().addLetExpression(let);
32    }
33  
34    @Override
35    default Map<IEnhancedQName, ILet> getLetExpressions() {
36      return getConstraintSupport().getLetExpressions();
37    }
38  
39    @Override
40    default List<? extends IConstraint> getConstraints() {
41      return getConstraintSupport().getConstraints();
42    }
43  
44    @Override
45    default List<? extends IAllowedValuesConstraint> getAllowedValuesConstraints() {
46      return getConstraintSupport().getAllowedValuesConstraints();
47    }
48  
49    @Override
50    default List<? extends IMatchesConstraint> getMatchesConstraints() {
51      return getConstraintSupport().getMatchesConstraints();
52    }
53  
54    @Override
55    default List<? extends IIndexHasKeyConstraint> getIndexHasKeyConstraints() {
56      return getConstraintSupport().getIndexHasKeyConstraints();
57    }
58  
59    @Override
60    default List<? extends IExpectConstraint> getExpectConstraints() {
61      return getConstraintSupport().getExpectConstraints();
62    }
63  
64    @Override
65    default void addConstraint(IAllowedValuesConstraint constraint) {
66      getConstraintSupport().addConstraint(constraint);
67    }
68  
69    @Override
70    default void addConstraint(IMatchesConstraint constraint) {
71      getConstraintSupport().addConstraint(constraint);
72    }
73  
74    @Override
75    default void addConstraint(IIndexHasKeyConstraint constraint) {
76      getConstraintSupport().addConstraint(constraint);
77    }
78  
79    @Override
80    default void addConstraint(@NonNull IExpectConstraint constraint) {
81      getConstraintSupport().addConstraint(constraint);
82    }
83  }