001package gov.nist.secauto.oscal.lib.model; 002 003import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; 004import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; 005import gov.nist.secauto.metaschema.databind.IBindingContext; 006import gov.nist.secauto.metaschema.databind.model.AbstractBoundModule; 007import gov.nist.secauto.metaschema.databind.model.IBoundModule; 008import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaModule; 009import java.lang.Override; 010import java.lang.String; 011import java.net.URI; 012import java.util.List; 013 014@MetaschemaModule( 015 assemblies = { 016 ComponentDefinition.class, 017 ImportComponentDefinition.class, 018 DefinedComponent.class, 019 Capability.class, 020 IncorporatesComponent.class, 021 ComponentControlImplementation.class, 022 ComponentImplementedRequirement.class, 023 ComponentStatement.class 024 }, 025 imports = OscalImplementationCommonModule.class, 026 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" 027 + "\n" 028 + "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" 029 + "\n" 030 + "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" 031 + "\n" 032 + "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" 033 + "\n" 034 + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`." 035) 036public final class OscalComponentDefinitionModule extends AbstractBoundModule { 037 private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Component Definition Model"); 038 039 private static final String SHORT_NAME = "oscal-component-definition"; 040 041 private static final String VERSION = "1.1.3"; 042 043 private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0"); 044 045 private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal"); 046 047 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" 048 + "\n" 049 + "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" 050 + "\n" 051 + "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" 052 + "\n" 053 + "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" 054 + "\n" 055 + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`."); 056 057 public OscalComponentDefinitionModule(List<? extends IBoundModule> importedModules, 058 IBindingContext bindingContext) { 059 super(importedModules, bindingContext); 060 } 061 062 @Override 063 public MarkupLine getName() { 064 return NAME; 065 } 066 067 @Override 068 public String getShortName() { 069 return SHORT_NAME; 070 } 071 072 @Override 073 public String getVersion() { 074 return VERSION; 075 } 076 077 @Override 078 public URI getXmlNamespace() { 079 return XML_NAMESPACE; 080 } 081 082 @Override 083 public URI getJsonBaseUri() { 084 return JSON_BASE_URI; 085 } 086 087 @Override 088 public MarkupMultiline getRemarks() { 089 return REMARKS; 090 } 091}