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.PACKAGE;
009import static java.lang.annotation.RetentionPolicy.RUNTIME;
010
011import java.lang.annotation.Retention;
012import java.lang.annotation.Target;
013
014import dev.metaschema.core.model.IModule;
015import dev.metaschema.databind.model.IBoundModule;
016
017/**
018 * Associates Metaschema module classes with a package.
019 */
020@Retention(RUNTIME)
021@Target(PACKAGE)
022public @interface MetaschemaPackage {
023  /**
024   * Get the metaschemas associated with this package.
025   *
026   * @return the classes that extend {@link IModule} or an empty array if no
027   *         metaschemas are defined
028   */
029  Class<? extends IBoundModule>[] moduleClass() default {};
030}