001package gov.nist.secauto.oscal.lib.model; 002 003import gov.nist.secauto.metaschema.core.datatype.adapter.UuidAdapter; 004import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; 005import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultilineAdapter; 006import gov.nist.secauto.metaschema.core.model.IBoundObject; 007import gov.nist.secauto.metaschema.core.model.IMetaschemaData; 008import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; 009import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; 010import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; 011import java.lang.Override; 012import java.lang.String; 013import java.util.UUID; 014import org.apache.commons.lang3.builder.ReflectionToStringBuilder; 015import org.apache.commons.lang3.builder.ToStringStyle; 016 017/** 018 * The collection of components comprising this capability. 019 */ 020@MetaschemaAssembly( 021 formalName = "Incorporates Component", 022 description = "The collection of components comprising this capability.", 023 name = "incorporates-component", 024 moduleClass = OscalComponentDefinitionModule.class 025) 026public class IncorporatesComponent implements IBoundObject { 027 private final IMetaschemaData __metaschemaData; 028 029 /** 030 * "A <a href=\"https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented\">machine-oriented</a> identifier reference to a <code>component</code>." 031 */ 032 @BoundFlag( 033 formalName = "Component Reference", 034 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented) identifier reference to a `component`.", 035 name = "component-uuid", 036 required = true, 037 typeAdapter = UuidAdapter.class 038 ) 039 private UUID _componentUuid; 040 041 @BoundField( 042 formalName = "Component Description", 043 description = "A description of the component, including information about its function.", 044 useName = "description", 045 minOccurs = 1, 046 typeAdapter = MarkupMultilineAdapter.class 047 ) 048 private MarkupMultiline _description; 049 050 public IncorporatesComponent() { 051 this(null); 052 } 053 054 public IncorporatesComponent(IMetaschemaData data) { 055 this.__metaschemaData = data; 056 } 057 058 @Override 059 public IMetaschemaData getMetaschemaData() { 060 return __metaschemaData; 061 } 062 063 public UUID getComponentUuid() { 064 return _componentUuid; 065 } 066 067 public void setComponentUuid(UUID value) { 068 _componentUuid = value; 069 } 070 071 public MarkupMultiline getDescription() { 072 return _description; 073 } 074 075 public void setDescription(MarkupMultiline value) { 076 _description = value; 077 } 078 079 @Override 080 public String toString() { 081 return new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString(); 082 } 083}