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}