1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.databind.model.annotations;
7   
8   import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
9   import static java.lang.annotation.RetentionPolicy.RUNTIME;
10  
11  import java.lang.annotation.Retention;
12  import java.lang.annotation.Target;
13  
14  import dev.metaschema.core.model.IAttributable;
15  import edu.umd.cs.findbugs.annotations.NonNull;
16  
17  /**
18   * Defines a name-value property for a Metaschema definition or instance.
19   */
20  @Retention(RUNTIME)
21  @Target(ANNOTATION_TYPE)
22  public @interface Property {
23    /**
24     * The name of the property.
25     *
26     * @return the name
27     */
28    @NonNull
29    String name();
30  
31    /**
32     * The namespace of the property's name.
33     *
34     * @return the namespace
35     */
36    @NonNull
37    String namespace() default IAttributable.DEFAULT_PROPERY_NAMESPACE;
38  
39    /**
40     * The values for the property's name and namespace.
41     *
42     * @return the namespace
43     */
44    @NonNull
45    String[] values();
46  }