View Javadoc
1   package gov.nist.secauto.oscal.lib.model;
2   
3   import gov.nist.secauto.metaschema.binding.IBindingContext;
4   import gov.nist.secauto.metaschema.binding.model.AbstractBoundMetaschema;
5   import gov.nist.secauto.metaschema.binding.model.annotations.Metaschema;
6   import gov.nist.secauto.metaschema.model.common.IMetaschema;
7   import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine;
8   import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
9   import java.lang.Override;
10  import java.lang.String;
11  import java.net.URI;
12  import java.util.List;
13  
14  @Metaschema(
15      assemblies = {
16          Profile.class,
17          ProfileImport.class,
18          Merge.class,
19          ProfileGroup.class,
20          Modify.class,
21          InsertControls.class,
22          ProfileSelectControlById.class,
23          Matching.class
24      },
25      imports = {
26          OscalMetadataMetaschema.class,
27          OscalControlCommonMetaschema.class
28      },
29      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"
30              + "\n"
31              + "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"
32              + "\n"
33              + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations."
34  )
35  public final class OscalProfileMetaschema extends AbstractBoundMetaschema {
36    private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Profile Model");
37  
38    private static final String SHORT_NAME = "oscal-profile";
39  
40    private static final String VERSION = "1.1.2";
41  
42    private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
43  
44    private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
45  
46    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"
47        + "\n"
48        + "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"
49        + "\n"
50        + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations.");
51  
52    public OscalProfileMetaschema(List<? extends IMetaschema> importedMetaschema,
53        IBindingContext bindingContext) {
54      super(importedMetaschema, bindingContext);
55    }
56  
57    @Override
58    public MarkupLine getName() {
59      return NAME;
60    }
61  
62    @Override
63    public String getShortName() {
64      return SHORT_NAME;
65    }
66  
67    @Override
68    public String getVersion() {
69      return VERSION;
70    }
71  
72    @Override
73    public URI getXmlNamespace() {
74      return XML_NAMESPACE;
75    }
76  
77    @Override
78    public URI getJsonBaseUri() {
79      return JSON_BASE_URI;
80    }
81  
82    @Override
83    public MarkupMultiline getRemarks() {
84      return REMARKS;
85    }
86  }