OscalComponentDefinitionMetaschema.java

package gov.nist.secauto.oscal.lib.model;

import gov.nist.secauto.metaschema.binding.IBindingContext;
import gov.nist.secauto.metaschema.binding.model.AbstractBoundMetaschema;
import gov.nist.secauto.metaschema.binding.model.annotations.Metaschema;
import gov.nist.secauto.metaschema.model.common.IMetaschema;
import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine;
import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
import java.lang.Override;
import java.lang.String;
import java.net.URI;
import java.util.List;

@Metaschema(
    assemblies = {
        ComponentDefinition.class,
        ImportComponentDefinition.class,
        DefinedComponent.class,
        Capability.class,
        IncorporatesComponent.class,
        ComponentControlImplementation.class,
        ComponentImplementedRequirement.class,
        ComponentStatement.class
    },
    imports = OscalImplementationCommonMetaschema.class,
    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"
            + "\n"
            + "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"
            + "\n"
            + "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"
            + "\n"
            + "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"
            + "\n"
            + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`."
)
public final class OscalComponentDefinitionMetaschema extends AbstractBoundMetaschema {
  private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Component Definition Model");

  private static final String SHORT_NAME = "oscal-component-definition";

  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("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"
      + "\n"
      + "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"
      + "\n"
      + "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"
      + "\n"
      + "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"
      + "\n"
      + "The root of the OSCAL Implementation Layer Component Definition model is `component-definition`.");

  public OscalComponentDefinitionMetaschema(List<? extends IMetaschema> importedMetaschema,
      IBindingContext bindingContext) {
    super(importedMetaschema, 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;
  }
}