Package com.xebialabs.deployit.plugin.api.udm

## Interface ConfigurationItem

- All Superinterfaces:
    `java.io.Serializable`
  All Known Subinterfaces:
    `AppliedProvisioner<D>`, `ArchiveArtifact`, `Artifact`, `Container`, `Deployable`, `DeployableArtifact`, `DeployableContainer`, `Deployed<D,​C>`, `DerivedArtifact<D>`, `EmbeddedDeployable`, `EmbeddedDeployed<D,​C>`, `EmbeddedDeployedContainer<D,​C>`, `FileArtifact`, `FolderArtifact`, `HostContainer`, `IDictionary`, `IEncryptedDictionary`, `LookupValueProvider`, `Provisionable`, `Provisioned<D,​C>`, `Provisioner`, `SourceArtifact`, `Taggable`
  All Known Implementing Classes:
    `AbstractDictionary`, `Application`, `BaseAppliedProvisioner`, `BaseAppliedProvisionerArtifact`, `BaseConfigurationItem`, `BaseConfigurationItemWithPolicies`, `BaseContainer`, `BaseDeployable`, `BaseDeployableArchiveArtifact`, `BaseDeployableArtifact`, `BaseDeployableContainer`, `BaseDeployableFileArtifact`, `BaseDeployableFolderArtifact`, `BaseDeployed`, `BaseDeployedArtifact`, `BaseDeployedContainer`, `BaseDeployedInfrastructureAsCode`, `BaseEmbeddedDeployable`, `BaseEmbeddedDeployed`, `BaseProvisionable`, `BaseProvisioned`, `BaseProvisionedContainer`, `BaseProvisioner`, `BaseProvisionerArtifact`, `CompositePackage`, `Configuration`, `DeployedApplication`, `DeploymentPackage`, `Dictionary`, `Directory`, `EmbeddedDeployableArtifact`, `EmbeddedDeployedArtifact`, `EncryptedDictionary`, `Environment`, `Host`, `Parameters`, `ProvisioningPackage`, `SimpleLookupValueProvider`, `Template`, `Version`

      public interface ConfigurationItem
      extends java.io.Serializable

  Base interface of all configuration item types.

  Do not directly implement this class, instead extend `BaseConfigurationItem` or one of the types derived from it (e.g. `BaseDeployable`, `BaseDeployed` or `BaseContainer`).

  The following contract is required: - The Type of a ConfigurationItem should be stored in a field called 'type'.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `SYNTHETIC_PROPERTIES_FIELD` |
    `static java.lang.String` | `TYPE_FIELD` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `get$directoryReference()` |
    `java.lang.Integer` | `get$internalId()` |
    `java.lang.String` | `get$referenceId()` |
    `java.lang.Integer` | `get$securedCi()` |
    `java.lang.String` | `get$securedDirectoryReference()` |
    `java.util.List<ValidationMessage>` | `get$validationMessages()` | Gets the validation messages set on the ConfigurationItem.
    `java.lang.String` | `getId()` |
    `java.lang.String` | `getName()` |
    `<T> T` | `getProperty​(java.lang.String key)` |
    `Type` | `getType()` |
    `boolean` | `hasProperty​(java.lang.String key)` |
    `void` | `setId​(java.lang.String id)` | Sets The id of the CI.
    `<T> void` | `setProperty​(java.lang.String key, T value)` | Adds a custom property of a generic type to the CI.

- - ### Field Detail

    - #### TYPE_FIELD

          static final java.lang.String TYPE_FIELD

      See Also:
        Constant Field Values

    - #### SYNTHETIC_PROPERTIES_FIELD

          static final java.lang.String SYNTHETIC_PROPERTIES_FIELD

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getId

          java.lang.String getId()

      Returns:
        The id of the CI.

    - #### setId

          void setId​(java.lang.String id)

      Sets The id of the CI.

    - #### getName

          java.lang.String getName()

      Returns:
        The name of the CI.

    - #### getType

          Type getType()

      Returns:
        The type metadata for this CI.

    - #### getProperty

          <T> T getProperty​(java.lang.String key)

      Type Parameters:
        `T` - The type of the property.
      Parameters:
        `key` - The name of the property.
      Returns:
        The value of type T of the property.

    - #### hasProperty

          boolean hasProperty​(java.lang.String key)

      Parameters:
        `key` - The name of the property.
      Returns:
        True if the CI has a added property with the given name.

    - #### setProperty

          <T> void setProperty​(java.lang.String key,
                               T value)

      Adds a custom property of a generic type to the CI.
      Type Parameters:
        `T` - The type of the property.
      Parameters:
        `key` - The name of the property.
        `value` - The value of type T of the property.

    - #### get$validationMessages

          java.util.List<ValidationMessage> get$validationMessages()

      Gets the validation messages set on the ConfigurationItem.
      Returns:
        a List<ValidationMessage>

    - #### get$internalId

          java.lang.Integer get$internalId()

      Returns:
        The internal ID of ConfigurationItem.

    - #### get$securedCi

          java.lang.Integer get$securedCi()

      Returns:
        The ID of secured CI which determines ConfigurationItem's permissions.

    - #### get$directoryReference

          java.lang.String get$directoryReference()

      Returns:
        The UUID of ConfigurationItem's directory.

    - #### get$securedDirectoryReference

          java.lang.String get$securedDirectoryReference()

      Returns:
        The UUID of ConfigurationItems secured directory which determines ConfigurationItems permissions.

    - #### get$referenceId

          java.lang.String get$referenceId()

      Returns:
        The reference UUID of ConfigurationItem.