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          ComponentDefinition.class,
17          ImportComponentDefinition.class,
18          DefinedComponent.class,
19          Capability.class,
20          IncorporatesComponent.class,
21          ComponentControlImplementation.class,
22          ComponentImplementedRequirement.class,
23          ComponentStatement.class
24      },
25      imports = OscalImplementationCommonMetaschema.class,
26      remarks = "The OSCAL Component Definition Model can be used to describe the implementation of controls in a `component` or a set of components grouped as a `capability`. A component can be either a *technical component* , or a *documentary component*.\n"
27              + "\n"
28              + "A technical component is a component that is implemented in hardware (physical or virtual) or software. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their hardware and software.\n"
29              + "\n"
30              + "A documentary component is a component implemented for a documented process, procedure, or policy. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their process, procedure, or policy.\n"
31              + "\n"
32              + "The information provided by a technical or documentary component can be used by component consumers to provide starting narratives for documenting control implementations in an OSCAL SSP.\n"
33              + "\n"
34              + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`."
35  )
36  public final class OscalComponentDefinitionMetaschema extends AbstractBoundMetaschema {
37    private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Component Definition Model");
38  
39    private static final String SHORT_NAME = "oscal-component-definition";
40  
41    private static final String VERSION = "1.1.2";
42  
43    private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
44  
45    private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
46  
47    private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("The OSCAL Component Definition Model can be used to describe the implementation of controls in a `component` or a set of components grouped as a `capability`. A component can be either a *technical component* , or a *documentary component*.\n"
48        + "\n"
49        + "A technical component is a component that is implemented in hardware (physical or virtual) or software. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their hardware and software.\n"
50        + "\n"
51        + "A documentary component is a component implemented for a documented process, procedure, or policy. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their process, procedure, or policy.\n"
52        + "\n"
53        + "The information provided by a technical or documentary component can be used by component consumers to provide starting narratives for documenting control implementations in an OSCAL SSP.\n"
54        + "\n"
55        + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`.");
56  
57    public OscalComponentDefinitionMetaschema(List<? extends IMetaschema> importedMetaschema,
58        IBindingContext bindingContext) {
59      super(importedMetaschema, bindingContext);
60    }
61  
62    @Override
63    public MarkupLine getName() {
64      return NAME;
65    }
66  
67    @Override
68    public String getShortName() {
69      return SHORT_NAME;
70    }
71  
72    @Override
73    public String getVersion() {
74      return VERSION;
75    }
76  
77    @Override
78    public URI getXmlNamespace() {
79      return XML_NAMESPACE;
80    }
81  
82    @Override
83    public URI getJsonBaseUri() {
84      return JSON_BASE_URI;
85    }
86  
87    @Override
88    public MarkupMultiline getRemarks() {
89      return REMARKS;
90    }
91  }