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        ProfileSelectControlById.class,
029        ProfileMatching.class
030    },
031    imports = {
032        OscalMetadataModule.class,
033        OscalControlCommonModule.class
034    },
035    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"
036            + "\n"
037            + "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"
038            + "\n"
039            + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations."
040)
041public final class OscalProfileModule extends AbstractBoundModule {
042  private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Profile Model");
043
044  private static final String SHORT_NAME = "oscal-profile";
045
046  private static final String VERSION = "1.2.0";
047
048  private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
049
050  private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
051
052  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"
053      + "\n"
054      + "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"
055      + "\n"
056      + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations.");
057
058  /**
059   * Construct a new module instance.
060   *
061   * @param importedModules
062   *           modules imported by this module
063   * @param bindingContext
064   *           the binding context to associate with this module
065   */
066  public OscalProfileModule(List<? extends IBoundModule> importedModules,
067      IBindingContext bindingContext) {
068    super(importedModules, bindingContext);
069  }
070
071  @Override
072  public MarkupLine getName() {
073    return NAME;
074  }
075
076  @Override
077  public String getShortName() {
078    return SHORT_NAME;
079  }
080
081  @Override
082  public String getVersion() {
083    return VERSION;
084  }
085
086  @Override
087  public URI getXmlNamespace() {
088    return XML_NAMESPACE;
089  }
090
091  @Override
092  public URI getJsonBaseUri() {
093    return JSON_BASE_URI;
094  }
095
096  @Override
097  public MarkupMultiline getRemarks() {
098    return REMARKS;
099  }
100}