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}