001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package dev.metaschema.databind.model.annotations;
007
008import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
009import static java.lang.annotation.RetentionPolicy.RUNTIME;
010
011import java.lang.annotation.Retention;
012import java.lang.annotation.Target;
013
014import dev.metaschema.core.model.IAttributable;
015import edu.umd.cs.findbugs.annotations.NonNull;
016
017/**
018 * Defines a name-value property for a Metaschema definition or instance.
019 */
020@Retention(RUNTIME)
021@Target(ANNOTATION_TYPE)
022public @interface Property {
023  /**
024   * The name of the property.
025   *
026   * @return the name
027   */
028  @NonNull
029  String name();
030
031  /**
032   * The namespace of the property's name.
033   *
034   * @return the namespace
035   */
036  @NonNull
037  String namespace() default IAttributable.DEFAULT_PROPERY_NAMESPACE;
038
039  /**
040   * The values for the property's name and namespace.
041   *
042   * @return the namespace
043   */
044  @NonNull
045  String[] values();
046}