Class DefinedComponent

java.lang.Object
dev.metaschema.oscal.lib.model.DefinedComponent
All Implemented Interfaces:
dev.metaschema.core.model.IBoundObject

@MetaschemaAssembly(formalName="Component", description="A defined component that can be part of an implemented system.", name="defined-component", moduleClass=OscalComponentDefinitionModule.class, remarks="Components may be products, services, APIs, policies, processes, plans, guidance, standards, or other tangible items that enable security and/or privacy.\n\nThe `type` indicates which of these component types is represented.\n\nA group of components may be aggregated into a `capability`. For example, an account management capability that consists of an account management process, and a Lightweight Directory Access Protocol (LDAP) software implementation.\n\nCapabilities are expressed by combining one or more components.", valueConstraints=@ValueConstraints(allowedValues={@AllowedValues(id="oscal-component-prop-name",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values={@AllowedValue(value="version",description="The version of the component."),@AllowedValue(value="patch-level",description="The specific patch level of the component."),@AllowedValue(value="model",description="The model of system used by the asset."),@AllowedValue(value="release-date",description="The date the component was released, such as a software release date or policy publication date."),@AllowedValue(value="validation-type",description="Used with component-type=\'validation\' to provide a well-known name for a kind of validation."),@AllowedValue(value="validation-reference",description="Used with component-type=\'validation\' to indicate the validating body\'s assigned identifier for their validation of this component."),@AllowedValue(value="asset-type",description="Simple indication of the asset\'s function, such as Router, Storage Array, DNS Server."),@AllowedValue(value="asset-id",description="An organizationally specific identifier that is used to uniquely identify a logical or tangible item by the organization that owns the item."),@AllowedValue(value="asset-tag",description="An asset tag assigned by the organization responsible for maintaining the logical or tangible item."),@AllowedValue(value="public",description="Identifies whether the asset is publicly accessible (yes/no)"),@AllowedValue(value="virtual",description="Identifies whether the asset is virtualized (yes/no)"),@AllowedValue(value="vlan-id",description="Virtual LAN identifier of the asset."),@AllowedValue(value="network-id",description="The network identifier of the asset."),@AllowedValue(value="label",description="A human-readable label for the parent context."),@AllowedValue(value="sort-id",description="An alternative identifier, whose value is easily sortable among other such values in the document."),@AllowedValue(value="baseline-configuration-name",description="The name of the baseline configuration for the asset."),@AllowedValue(value="allows-authenticated-scan",description="Can the asset be check with an authenticated scan? (yes/no)"),@AllowedValue(value="function",description="The function provided by the asset for the system."),@AllowedValue(value="hardware-model",description="\\*\\*(deprecated)\\*\\* Use \'model\' instead.",deprecatedVersion="1.2.0"),@AllowedValue(value="os-name",description="The name of the operating system used by the asset."),@AllowedValue(value="os-version",description="The version of the operating system used by the asset."),@AllowedValue(value="software-name",description="The software product name used by the asset."),@AllowedValue(value="software-version",description="The software product version used by the asset."),@AllowedValue(value="software-patch-level",description="The software product patch level used by the asset.")}),@AllowedValues(id="oscal-component-link-rel-type",level=ERROR,target="link/@rel",allowOthers=true,values={@AllowedValue(value="depends-on",description="A reference to another component that this component has a dependency on."),@AllowedValue(value="validation",description="A reference to another component of component-type=validation, that is a validation (e.g., FIPS 140-2) for this component"),@AllowedValue(value="proof-of-compliance",description="A pointer to a validation record (e.g., FIPS 140-2) or other compliance information."),@AllowedValue(value="baseline-template",description="A reference to the baseline template used to configure the asset."),@AllowedValue(value="uses-service",description="This service is used by the referenced component identifier."),@AllowedValue(value="system-security-plan",description="A link to the system security plan of the external system."),@AllowedValue(value="uses-network",description="This component uses the network provided by the identified network component.")}),@AllowedValues(id="oscal-component-role-id",level=ERROR,target="responsible-role/@role-id|control-implementation/implemented-requirement/responsible-role/@role-id|control-implementation/implemented-requirement/statement/responsible-role/@role-id",allowOthers=true,values={@AllowedValue(value="asset-owner",description="Accountable for ensuring the asset is managed in accordance with organizational policies and procedures."),@AllowedValue(value="asset-administrator",description="Responsible for administering a set of assets."),@AllowedValue(value="security-operations",description="Members of the security operations center (SOC)."),@AllowedValue(value="network-operations",description="Members of the network operations center (NOC)."),@AllowedValue(value="incident-response",description="Responsible for responding to an event that could lead to loss of, or disruption to, an organization\'s operations, services or functions."),@AllowedValue(value="help-desk",description="Responsible for providing information and support to users."),@AllowedValue(value="configuration-management",description="Responsible for the configuration management processes governing changes to the asset."),@AllowedValue(value="maintainer",description="Responsible for the creation and maintenance of a component."),@AllowedValue(value="provider",description="Organization responsible for providing the component, if this is different from the \"maintainer\" (e.g., a reseller).")}),@AllowedValues(id="oscal-component-asset-type-value",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'asset-type\']/@value",allowOthers=true,values={@AllowedValue(value="operating-system",description="System software that manages computer hardware, software resources, and provides common services for computer programs."),@AllowedValue(value="database",description="An electronic collection of data, or information, that is specially organized for rapid search and retrieval."),@AllowedValue(value="web-server",description="A system that delivers content or services to end users over the Internet or an intranet."),@AllowedValue(value="dns-server",description="A system that resolves domain names to internet protocol (IP) addresses."),@AllowedValue(value="email-server",description="A computer system that sends and receives electronic mail messages."),@AllowedValue(value="directory-server",description="A system that stores, organizes and provides access to directory information in order to unify network resources."),@AllowedValue(value="pbx",description="A private branch exchange (PBX) provides a a private telephone switchboard."),@AllowedValue(value="firewall",description="A network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules."),@AllowedValue(value="router",description="A physical or virtual networking device that forwards data packets between computer networks."),@AllowedValue(value="switch",description="A physical or virtual networking device that connects devices within a computer network by using packet switching to receive and forward data to the destination device."),@AllowedValue(value="storage-array",description="A consolidated, block-level data storage capability."),@AllowedValue(value="appliance",description="A physical or virtual machine that centralizes hardware, software, or services for a specific purpose.")}),@AllowedValues(id="oscal-component-allows-authenticated-scan-value",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'allows-authenticated-scan\']/@value",values={@AllowedValue(value="yes",description="The component allows an authenticated scan."),@AllowedValue(value="no",description="The component does not allow an authenticated scan.")}),@AllowedValues(id="oscal-component-virtual-value",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'virtual\']/@value",values={@AllowedValue(value="yes",description="The component is virtualized."),@AllowedValue(value="no",description="The component is not virtualized.")}),@AllowedValues(id="oscal-component-public-value",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'public\']/@value",values={@AllowedValue(value="yes",description="The component is publicly accessible."),@AllowedValue(value="no",description="The component is not publicly accessible.")}),@AllowedValues(id="oscal-component-implementation-point-value",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'implementation-point\']/@value",values={@AllowedValue(value="internal",description="The component is implemented within the system boundary."),@AllowedValue(value="external",description="The component is implemented outside the system boundary.")}),@AllowedValues(id="oscal-software-component-prop-name",level=ERROR,target="(.)[@type=\'software\']/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values=@AllowedValue(value="software-identifier",description="If a \"software\" component-type, the identifier, such as a SWID tag, for the software component.")),@AllowedValues(id="oscal-service-component-link-rel-type",level=ERROR,target="(.)[@type=\'service\']/link/@rel",allowOthers=true,values={@AllowedValue(value="provided-by",description="This service is provided by the referenced component identifier."),@AllowedValue(value="used-by",description="This service is used by the referenced component identifier.")})},indexHasKey=@IndexHasKey(id="oscal-index-metadata-location-uuid",level=ERROR,target="prop[@name=\'physical-location\']",indexName="index-metadata-location-uuid",keyFields=@KeyField(target="@value")),matches={@Matches(id="oscal-component-inherited-uuid-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'inherited-uuid\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.UuidAdapter.class),@Matches(id="oscal-component-release-date-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'release-date\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.DateAdapter.class)}), modelConstraints=@AssemblyConstraints(unique=@IsUnique(id="oscal-unique-defined-component-responsible-role",level=ERROR,target="responsible-role",keyFields=@KeyField(target="@role-id"),remarks="Since `responsible-role` associates multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once."))) public class DefinedComponent extends Object implements dev.metaschema.core.model.IBoundObject
A defined component that can be part of an implemented system.
  • Constructor Details

    • DefinedComponent

      Constructs a new dev.metaschema.oscal.lib.model.DefinedComponent instance with no metadata.
    • DefinedComponent

      public DefinedComponent(dev.metaschema.core.model.IMetaschemaData data)
      Constructs a new dev.metaschema.oscal.lib.model.DefinedComponent instance with the specified metadata.
      Parameters:
      data - the metaschema data, or null if none
  • Method Details

    • getMetaschemaData

      public dev.metaschema.core.model.IMetaschemaData getMetaschemaData()
      Specified by:
      getMetaschemaData in interface dev.metaschema.core.model.IBoundObject
    • getUuid

      @NonNull public UUID getUuid()
      Get the "Component Identifier".

      Provides a globally unique means to identify a given component.

      Returns:
      the uuid value
    • setUuid

      public void setUuid(@NonNull UUID value)
      Set the "Component Identifier".

      Provides a globally unique means to identify a given component.

      Parameters:
      value - the uuid value to set
    • getType

      @NonNull public String getType()
      Get the "Component Type".

      A category describing the purpose of the component.

      Returns:
      the type value
    • setType

      public void setType(@NonNull String value)
      Set the "Component Type".

      A category describing the purpose of the component.

      Parameters:
      value - the type value to set
    • getTitle

      @NonNull public dev.metaschema.core.datatype.markup.MarkupLine getTitle()
      Get the "Component Title".

      A human readable name for the component.

      Returns:
      the title value
    • setTitle

      public void setTitle(@NonNull dev.metaschema.core.datatype.markup.MarkupLine value)
      Set the "Component Title".

      A human readable name for the component.

      Parameters:
      value - the title value to set
    • getDescription

      @NonNull public dev.metaschema.core.datatype.markup.MarkupMultiline getDescription()
      Get the "Component Description".

      A description of the component, including information about its function.

      Returns:
      the description value
    • setDescription

      public void setDescription(@NonNull dev.metaschema.core.datatype.markup.MarkupMultiline value)
      Set the "Component Description".

      A description of the component, including information about its function.

      Parameters:
      value - the description value to set
    • getPurpose

      @Nullable public dev.metaschema.core.datatype.markup.MarkupLine getPurpose()
      Get the "Purpose".

      A summary of the technological or business purpose of the component.

      Returns:
      the purpose value, or null if not set
    • setPurpose

      public void setPurpose(@Nullable dev.metaschema.core.datatype.markup.MarkupLine value)
      Set the "Purpose".

      A summary of the technological or business purpose of the component.

      Parameters:
      value - the purpose value to set, or null to clear
    • getProps

      @NonNull public List<Property> getProps()
      Get the "Property".

      An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.

      Returns:
      the prop value
    • setProps

      public void setProps(@NonNull List<Property> value)
      Set the "Property".

      An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.

      Parameters:
      value - the prop value to set
    • addProp

      public boolean addProp(Property item)
      Add a new Property item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeProp

      public boolean removeProp(Property item)
      Remove the first matching Property item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getLinks

      @NonNull public List<Link> getLinks()
      Get the "Link".

      A reference to a local or remote resource, that has a specific relation to the containing object.

      Returns:
      the link value
    • setLinks

      public void setLinks(@NonNull List<Link> value)
      Set the "Link".

      A reference to a local or remote resource, that has a specific relation to the containing object.

      Parameters:
      value - the link value to set
    • addLink

      public boolean addLink(Link item)
      Add a new Link item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeLink

      public boolean removeLink(Link item)
      Remove the first matching Link item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getResponsibleRoles

      Get the "Responsible Role".

      A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.

      Returns:
      the responsible-role value
    • setResponsibleRoles

      public void setResponsibleRoles(@NonNull List<ResponsibleRole> value)
      Set the "Responsible Role".

      A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.

      Parameters:
      value - the responsible-role value to set
    • addResponsibleRole

      public boolean addResponsibleRole(ResponsibleRole item)
      Add a new ResponsibleRole item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeResponsibleRole

      public boolean removeResponsibleRole(ResponsibleRole item)
      Remove the first matching ResponsibleRole item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getProtocols

      @NonNull public List<Protocol> getProtocols()
      Get the "Service Protocol Information".

      Information about the protocol used to provide a service.

      Returns:
      the protocol value
    • setProtocols

      public void setProtocols(@NonNull List<Protocol> value)
      Set the "Service Protocol Information".

      Information about the protocol used to provide a service.

      Parameters:
      value - the protocol value to set
    • addProtocol

      public boolean addProtocol(Protocol item)
      Add a new Protocol item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeProtocol

      public boolean removeProtocol(Protocol item)
      Remove the first matching Protocol item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getControlImplementations

      Get the "Control Implementation Set".

      Defines how the component or capability supports a set of controls.

      Returns:
      the control-implementation value
    • setControlImplementations

      Set the "Control Implementation Set".

      Defines how the component or capability supports a set of controls.

      Parameters:
      value - the control-implementation value to set
    • addControlImplementation

      Add a new ComponentControlImplementation item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeControlImplementation

      Remove the first matching ComponentControlImplementation item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getRemarks

      @Nullable public dev.metaschema.core.datatype.markup.MarkupMultiline getRemarks()
      Get the "Remarks".

      Additional commentary about the containing object.

      Returns:
      the remarks value, or null if not set
    • setRemarks

      public void setRemarks(@Nullable dev.metaschema.core.datatype.markup.MarkupMultiline value)
      Set the "Remarks".

      Additional commentary about the containing object.

      Parameters:
      value - the remarks value to set, or null to clear
    • toString

      public String toString()
      Overrides:
      toString in class Object