001// Generated from: ../../../../../../../../oscal/src/metaschema/oscal_catalog_metaschema.xml
002// Do not edit - changes will be lost when regenerated.
003package dev.metaschema.oscal.lib.model;
004
005import dev.metaschema.core.datatype.markup.MarkupLine;
006import dev.metaschema.core.datatype.markup.MarkupMultiline;
007import dev.metaschema.databind.IBindingContext;
008import dev.metaschema.databind.model.AbstractBoundModule;
009import dev.metaschema.databind.model.IBoundModule;
010import dev.metaschema.databind.model.annotations.MetaschemaModule;
011import java.net.URI;
012import java.util.List;
013
014/**
015 * OSCAL Control Catalog Model
016 * <p>The OSCAL Control Catalog format can be used to describe a collection of security controls and related control enhancements, along with contextualizing documentation and metadata. The root of the Control Catalog format is <code>catalog</code>.</p>
017 */
018@MetaschemaModule(
019    assemblies = {
020        Catalog.class,
021        CatalogGroup.class,
022        Control.class
023    },
024    imports = {
025        OscalControlCommonModule.class,
026        OscalMetadataModule.class
027    },
028    remarks = "The OSCAL Control Catalog format can be used to describe a collection of security controls and related control enhancements, along with contextualizing documentation and metadata. The root of the Control Catalog format is `catalog`."
029)
030public final class OscalCatalogModule extends AbstractBoundModule {
031  private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Control Catalog Model");
032
033  private static final String SHORT_NAME = "oscal-catalog";
034
035  private static final String VERSION = "1.2.0";
036
037  private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
038
039  private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
040
041  private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("The OSCAL Control Catalog format can be used to describe a collection of security controls and related control enhancements, along with contextualizing documentation and metadata. The root of the Control Catalog format is `catalog`.");
042
043  /**
044   * Construct a new module instance.
045   *
046   * @param importedModules
047   *           modules imported by this module
048   * @param bindingContext
049   *           the binding context to associate with this module
050   */
051  public OscalCatalogModule(List<? extends IBoundModule> importedModules,
052      IBindingContext bindingContext) {
053    super(importedModules, bindingContext);
054  }
055
056  @Override
057  public MarkupLine getName() {
058    return NAME;
059  }
060
061  @Override
062  public String getShortName() {
063    return SHORT_NAME;
064  }
065
066  @Override
067  public String getVersion() {
068    return VERSION;
069  }
070
071  @Override
072  public URI getXmlNamespace() {
073    return XML_NAMESPACE;
074  }
075
076  @Override
077  public URI getJsonBaseUri() {
078    return JSON_BASE_URI;
079  }
080
081  @Override
082  public MarkupMultiline getRemarks() {
083    return REMARKS;
084  }
085}