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.ElementType.TYPE; 9 import static java.lang.annotation.RetentionPolicy.RUNTIME; 10 11 import gov.nist.secauto.metaschema.databind.model.IBoundModule; 12 13 import java.lang.annotation.Documented; 14 import java.lang.annotation.Retention; 15 import java.lang.annotation.Target; 16 17 import edu.umd.cs.findbugs.annotations.NonNull; 18 19 /** 20 * This annotation indicates that the target class represents a Module assembly. 21 */ 22 @Documented 23 @Retention(RUNTIME) 24 @Target(TYPE) 25 public @interface MetaschemaAssembly { 26 /** 27 * Get the documentary formal name of the assembly. 28 * <p> 29 * If the value is "##none", then the description will be considered 30 * {@code null}. 31 * 32 * @return a Markdown string or {@code "##none"} if no formal name is provided 33 */ 34 @NonNull 35 String formalName() default ModelUtil.NO_STRING_VALUE; 36 37 /** 38 * Get the documentary description of the assembly. 39 * <p> 40 * If the value is "##none", then the description will be considered 41 * {@code null}. 42 * 43 * @return a markdown string or {@code "##none"} if no description is provided 44 */ 45 @NonNull 46 String description() default ModelUtil.NO_STRING_VALUE; 47 48 /** 49 * Get the Metaschema module class that "owns" this assembly, which is the 50 * concrete implementation of the module containing the assembly. 51 * 52 * @return the {@link IBoundModule} class 53 */ 54 @NonNull 55 Class<? extends IBoundModule> moduleClass(); 56 57 /** 58 * Name of the assembly. 59 * 60 * @return the name 61 */ 62 @NonNull 63 String name(); 64 65 /** 66 * The binary name of the assembly. 67 * <p> 68 * The value {@link Integer#MIN_VALUE} indicates that there is no index. 69 * 70 * @return the index value 71 */ 72 int index() default Integer.MIN_VALUE; 73 74 /** 75 * Name of the root XML element or the JSON/YAML property. 76 * <p> 77 * If the value is "##none", then there is no root name. 78 * 79 * @return the name 80 */ 81 @NonNull 82 String rootName() default ModelUtil.NO_STRING_VALUE; 83 84 /** 85 * The binary root name of the assembly. 86 * <p> 87 * The value {@link Integer#MIN_VALUE} indicates that there is no root index. 88 * 89 * @return the index value 90 */ 91 int rootIndex() default Integer.MIN_VALUE; 92 93 /** 94 * An optional set of associated properties. 95 * 96 * @return the properties or an empty array with no properties 97 */ 98 Property[] properties() default {}; 99 100 /** 101 * Get any remarks for this assembly. 102 * 103 * @return a markdown string or {@code "##none"} if no remarks are provided 104 */ 105 @NonNull 106 String remarks() default ModelUtil.NO_STRING_VALUE; 107 108 /** 109 * Get the value constraints defined for this Metaschema assembly definition. 110 * 111 * @return the value constraints 112 */ 113 ValueConstraints valueConstraints() default @ValueConstraints; 114 115 /** 116 * Get the model constraints defined for this Metaschema assembly definition. 117 * 118 * @return the value constraints 119 */ 120 AssemblyConstraints modelConstraints() default @AssemblyConstraints; 121 }