001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package gov.nist.secauto.metaschema.databind.model.annotations;
007
008import static java.lang.annotation.RetentionPolicy.RUNTIME;
009
010import gov.nist.secauto.metaschema.core.model.IBoundObject;
011import gov.nist.secauto.metaschema.databind.model.IBoundModule;
012
013import java.lang.annotation.ElementType;
014import java.lang.annotation.Retention;
015import java.lang.annotation.Target;
016
017import edu.umd.cs.findbugs.annotations.NonNull;
018
019@Retention(RUNTIME)
020@Target(ElementType.TYPE)
021public @interface MetaschemaModule {
022  /**
023   * Get the classes representing the global fields defined on this Module.
024   *
025   * @return an array of field classes
026   */
027  @NonNull
028  Class<? extends IBoundObject>[] fields() default {};
029
030  /**
031   * Get the classes representing the global assemblies defined on this Module.
032   *
033   * @return an array of assembly classes
034   */
035  @NonNull
036  Class<? extends IBoundObject>[] assemblies() default {};
037
038  /**
039   * Get the classes representing the Metaschemas imported by this Module.
040   *
041   * @return an array of imported Metaschemas
042   */
043  @NonNull
044  Class<? extends IBoundModule>[] imports() default {};
045
046  @NonNull
047  NsBinding[] nsBindings() default {};
048
049  /**
050   * Get any remarks for this metaschema.
051   *
052   * @return a markdown string or {@code "##none"} if no remarks are provided
053   */
054  @NonNull
055  String remarks() default ModelUtil.NO_STRING_VALUE;
056}