1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.model;
7   
8   import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine;
9   
10  import edu.umd.cs.findbugs.annotations.Nullable;
11  
12  public interface IDescribable {
13    /**
14     * The formal display name.
15     *
16     * @return the formal name or {@code null} if not defined
17     */
18    // from INamedModelElement
19    @Nullable
20    String getFormalName();
21  
22    /**
23     * Get the text that describes the basic use of the element.
24     *
25     * @return a line of markup text or {@code null} if not defined
26     */
27    // from INamedModelElement
28    @Nullable
29    MarkupLine getDescription();
30  
31    /**
32     * The resolved formal display name, which allows an instance to override a
33     * definition's name.
34     *
35     * @return the formal name or {@code null} if not defined
36     */
37    // from INamedModelElement
38    @Nullable
39    default String getEffectiveFormalName() {
40      return getFormalName();
41    }
42  
43    /**
44     * Get the text that describes the basic use of the element, which allows an
45     * instance to override a definition's description.
46     *
47     * @return a line of markup text or {@code null} if not defined
48     */
49    // from INamedModelElement
50    @Nullable
51    default MarkupLine getEffectiveDescription() {
52      return getDescription();
53    }
54  }