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 java.util.List;
9   
10  import edu.umd.cs.findbugs.annotations.NonNull;
11  
12  /**
13   * A marker interface for a Metaschema model construct (i.e. assembly, field)
14   * that can be constrained using Metaschema constraints.
15   */
16  public interface IFeatureModelConstrained extends IModelConstrained, IFeatureValueConstrained {
17    @Override
18    IModelConstrained getConstraintSupport();
19  
20    @Override
21    default List<? extends IIndexConstraint> getIndexConstraints() {
22      return getConstraintSupport().getIndexConstraints();
23    }
24  
25    @Override
26    default List<? extends IUniqueConstraint> getUniqueConstraints() {
27      return getConstraintSupport().getUniqueConstraints();
28    }
29  
30    @Override
31    default List<? extends ICardinalityConstraint> getHasCardinalityConstraints() {
32      return getConstraintSupport().getHasCardinalityConstraints();
33    }
34  
35    @Override
36    default void addConstraint(@NonNull IIndexConstraint constraint) {
37      getConstraintSupport().addConstraint(constraint);
38    }
39  
40    @Override
41    default void addConstraint(@NonNull IUniqueConstraint constraint) {
42      getConstraintSupport().addConstraint(constraint);
43    }
44  
45    @Override
46    default void addConstraint(@NonNull ICardinalityConstraint constraint) {
47      getConstraintSupport().addConstraint(constraint);
48    }
49  }