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 Catalog.class, 17 CatalogGroup.class, 18 Control.class 19 }, 20 imports = { 21 OscalControlCommonMetaschema.class, 22 OscalMetadataMetaschema.class 23 }, 24 remarks = "The OSCAL Control Catalog format can be used to describe a collection of security controls and related control enhancements, along with contextualizing documentation and metadata. The root of the Control Catalog format is `catalog`." 25 ) 26 public final class OscalCatalogMetaschema extends AbstractBoundMetaschema { 27 private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Control Catalog Model"); 28 29 private static final String SHORT_NAME = "oscal-catalog"; 30 31 private static final String VERSION = "1.1.2"; 32 33 private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0"); 34 35 private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal"); 36 37 private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("The OSCAL Control Catalog format can be used to describe a collection of security controls and related control enhancements, along with contextualizing documentation and metadata. The root of the Control Catalog format is `catalog`."); 38 39 public OscalCatalogMetaschema(List<? extends IMetaschema> importedMetaschema, 40 IBindingContext bindingContext) { 41 super(importedMetaschema, bindingContext); 42 } 43 44 @Override 45 public MarkupLine getName() { 46 return NAME; 47 } 48 49 @Override 50 public String getShortName() { 51 return SHORT_NAME; 52 } 53 54 @Override 55 public String getVersion() { 56 return VERSION; 57 } 58 59 @Override 60 public URI getXmlNamespace() { 61 return XML_NAMESPACE; 62 } 63 64 @Override 65 public URI getJsonBaseUri() { 66 return JSON_BASE_URI; 67 } 68 69 @Override 70 public MarkupMultiline getRemarks() { 71 return REMARKS; 72 } 73 }