OscalProfileModule.java
package gov.nist.secauto.oscal.lib.model;
import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine;
import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline;
import gov.nist.secauto.metaschema.databind.IBindingContext;
import gov.nist.secauto.metaschema.databind.model.AbstractBoundModule;
import gov.nist.secauto.metaschema.databind.model.IBoundModule;
import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaModule;
import java.lang.Override;
import java.lang.String;
import java.net.URI;
import java.util.List;
@MetaschemaModule(
assemblies = {
Profile.class,
ProfileImport.class,
Merge.class,
ProfileGroup.class,
Modify.class,
InsertControls.class,
ProfileSelectControlById.class,
Matching.class
},
imports = {
OscalMetadataModule.class,
OscalControlCommonModule.class
},
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"
+ "\n"
+ "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"
+ "\n"
+ "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations."
)
public final class OscalProfileModule extends AbstractBoundModule {
private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Profile Model");
private static final String SHORT_NAME = "oscal-profile";
private static final String VERSION = "1.1.2";
private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
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"
+ "\n"
+ "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"
+ "\n"
+ "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations.");
public OscalProfileModule(List<? extends IBoundModule> importedModules,
IBindingContext bindingContext) {
super(importedModules, bindingContext);
}
@Override
public MarkupLine getName() {
return NAME;
}
@Override
public String getShortName() {
return SHORT_NAME;
}
@Override
public String getVersion() {
return VERSION;
}
@Override
public URI getXmlNamespace() {
return XML_NAMESPACE;
}
@Override
public URI getJsonBaseUri() {
return JSON_BASE_URI;
}
@Override
public MarkupMultiline getRemarks() {
return REMARKS;
}
}