001// Generated from: ../../../../../../../../oscal/src/metaschema/oscal_profile_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 Profile Model
016 * <p>In OSCAL a profile represents a set of selected <a href="https://pages.nist.gov/OSCAL/concepts/terminology/#control">controls</a> from one or more control catalogs. Such a set of controls can be referenced by an OSCAL <a href="https://pages.nist.gov/OSCAL/concepts/layer/implementation/ssp/">system security plan</a> (SSP) to establish a control <a href="https://pages.nist.gov/OSCAL/concepts/terminology/#baseline">baseline</a>. This effective set of controls is produced from an OSCAL profile using a deterministic, predictable process called <a href="https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/">profile resolution</a>.</p>
017 * <p>A profile references one or more OSCAL catalogs or profiles to import controls for control selection and tailoring. A profile can also describe how a resulting catalog is structured. When the profile is resolved, these selections and modifications are processed to produce a resulting OSCAL catalog.</p>
018 * <p>OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations.</p>
019 */
020@MetaschemaModule(
021    assemblies = {
022        Profile.class,
023        ProfileImport.class,
024        Merge.class,
025        ProfileGroup.class,
026        Modify.class,
027        InsertControls.class
028    },
029    imports = {
030        OscalMetadataModule.class,
031        OscalControlCommonModule.class
032    },
033    remarks = "In OSCAL a profile represents a set of selected [controls](https://pages.nist.gov/OSCAL/concepts/terminology/#control) from one or more control catalogs. Such a set of controls can be referenced by an OSCAL [system security plan](https://pages.nist.gov/OSCAL/concepts/layer/implementation/ssp/) (SSP) to establish a control [baseline](https://pages.nist.gov/OSCAL/concepts/terminology/#baseline). This effective set of controls is produced from an OSCAL profile using a deterministic, predictable process called [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).\n"
034            + "\n"
035            + "A profile references one or more OSCAL catalogs or profiles to import controls for control selection and tailoring. A profile can also describe how a resulting catalog is structured. When the profile is resolved, these selections and modifications are processed to produce a resulting OSCAL catalog.\n"
036            + "\n"
037            + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations."
038)
039public final class OscalProfileModule extends AbstractBoundModule {
040  private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Profile Model");
041
042  private static final String SHORT_NAME = "oscal-profile";
043
044  private static final String VERSION = "1.2.1";
045
046  private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
047
048  private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
049
050  private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("In OSCAL a profile represents a set of selected [controls](https://pages.nist.gov/OSCAL/concepts/terminology/#control) from one or more control catalogs. Such a set of controls can be referenced by an OSCAL [system security plan](https://pages.nist.gov/OSCAL/concepts/layer/implementation/ssp/) (SSP) to establish a control [baseline](https://pages.nist.gov/OSCAL/concepts/terminology/#baseline). This effective set of controls is produced from an OSCAL profile using a deterministic, predictable process called [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).\n"
051      + "\n"
052      + "A profile references one or more OSCAL catalogs or profiles to import controls for control selection and tailoring. A profile can also describe how a resulting catalog is structured. When the profile is resolved, these selections and modifications are processed to produce a resulting OSCAL catalog.\n"
053      + "\n"
054      + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations.");
055
056  /**
057   * Construct a new module instance.
058   *
059   * @param importedModules
060   *           modules imported by this module
061   * @param bindingContext
062   *           the binding context to associate with this module
063   */
064  public OscalProfileModule(List<? extends IBoundModule> importedModules,
065      IBindingContext bindingContext) {
066    super(importedModules, bindingContext);
067  }
068
069  @Override
070  public MarkupLine getName() {
071    return NAME;
072  }
073
074  @Override
075  public String getShortName() {
076    return SHORT_NAME;
077  }
078
079  @Override
080  public String getVersion() {
081    return VERSION;
082  }
083
084  @Override
085  public URI getXmlNamespace() {
086    return XML_NAMESPACE;
087  }
088
089  @Override
090  public URI getJsonBaseUri() {
091    return JSON_BASE_URI;
092  }
093
094  @Override
095  public MarkupMultiline getRemarks() {
096    return REMARKS;
097  }
098}