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}