1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.model.annotations;
7   
8   import static java.lang.annotation.RetentionPolicy.RUNTIME;
9   
10  import gov.nist.secauto.metaschema.core.model.IBoundObject;
11  import gov.nist.secauto.metaschema.databind.model.IBoundModule;
12  
13  import java.lang.annotation.ElementType;
14  import java.lang.annotation.Retention;
15  import java.lang.annotation.Target;
16  
17  import edu.umd.cs.findbugs.annotations.NonNull;
18  
19  @Retention(RUNTIME)
20  @Target(ElementType.TYPE)
21  public @interface MetaschemaModule {
22    /**
23     * Get the classes representing the global fields defined on this Module.
24     *
25     * @return an array of field classes
26     */
27    @NonNull
28    Class<? extends IBoundObject>[] fields() default {};
29  
30    /**
31     * Get the classes representing the global assemblies defined on this Module.
32     *
33     * @return an array of assembly classes
34     */
35    @NonNull
36    Class<? extends IBoundObject>[] assemblies() default {};
37  
38    /**
39     * Get the classes representing the Metaschemas imported by this Module.
40     *
41     * @return an array of imported Metaschemas
42     */
43    @NonNull
44    Class<? extends IBoundModule>[] imports() default {};
45  
46    @NonNull
47    NsBinding[] nsBindings() default {};
48  
49    /**
50     * Get any remarks for this metaschema.
51     *
52     * @return a markdown string or {@code "##none"} if no remarks are provided
53     */
54    @NonNull
55    String remarks() default ModelUtil.NO_STRING_VALUE;
56  }