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}