Package com.xebialabs.deployit.plugin.api.reflect

## Interface Descriptor

-     public interface Descriptor

  Encapsulates the metadata about a type in the XL Deploy type system. Example of such metadata: the available properties, the implemented interfaces, the available control tasks etc.

  The Descriptor for a specific type can be retrieved using the MetadataService, which is also available as a REST API.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `areEqual​(ConfigurationItem item, ConfigurationItem other)` |
    `java.lang.Class<?>` | `getClazz()` |
    `Type` | `getContainerType()` | Only applicable for `Deployed`s.
    `MethodDescriptor` | `getControlTask​(java.lang.String name)` |
    `java.util.Collection<MethodDescriptor>` | `getControlTasks()` |
    `CreatorDescriptor` | `getCreator()` |
    `Type` | `getDeployableType()` | Only applicable for `Deployed`s.
    `java.lang.String` | `getDescription()` |
    `java.lang.String` | `getIcon()` |
    `java.util.Set<Type>` | `getInterfaces()` |
    `java.lang.String` | `getLabel()` |
    `PropertyDescriptor` | `getPropertyDescriptor​(java.lang.String name)` |
    `java.util.Collection<PropertyDescriptor>` | `getPropertyDescriptors()` | Note: The return-type is a Collection, but a List is actually returned.
    `default Metadata.ConfigurationItemRoot` | `getRoot()` |
    `java.lang.String` | `getRootName()` |
    `java.util.List<Type>` | `getSuperClasses()` |
    `Type` | `getType()` |
    `boolean` | `isAssignableTo​(Type type)` |
    `boolean` | `isAssignableTo​(java.lang.Class<?> clazz)` |
    `boolean` | `isInspectable()` |
    `boolean` | `isVersioned()` |
    `boolean` | `isVirtual()` |
    `<T extends ConfigurationItem> T` | `newInstance​(java.lang.String id)` |
    `java.lang.String` | `toString()` |
    `java.util.List<ValidationMessage>` | `validate​(ConfigurationItem ci)` | Validates the values for each property of the CI.
    `java.util.List<ValidationMessage>` | `validate​(ExtendedValidationContext context, ConfigurationItem ci)` |
    `java.util.List<ValidationMessage>` | `validateInputHint​(ConfigurationItem ci)` |

- - ### Method Detail

    - #### getType

          Type getType()

      Returns:
        The type of a `ConfigurationItem`.

    - #### getClazz

          java.lang.Class<?> getClazz()

      Returns:
        The `ConfigurationItem` class object.

    - #### getDescription

          java.lang.String getDescription()

      Returns:
        A textual description of this type.

    - #### getLabel

          java.lang.String getLabel()

      Returns:
        The friendly name of the type

    - #### getRoot

          default Metadata.ConfigurationItemRoot getRoot()

      Returns:
        The root in the JCR tree.

    - #### getRootName

          java.lang.String getRootName()

      Returns:
        The root name in the JCR tree.

    - #### getPropertyDescriptors

          java.util.Collection<PropertyDescriptor> getPropertyDescriptors()

      Note: The return-type is a Collection, but a List is actually returned. So the order of the properties is guaranteed. We cannot change the return-type as this would break binary compatibility.
      Returns:
        A list of metadata about a all the properties of this type.

    - #### getPropertyDescriptor

          PropertyDescriptor getPropertyDescriptor​(java.lang.String name)

      Parameters:
        `name` - The name of the property.
      Returns:
        The metadata for the given property name.

    - #### getControlTask

          MethodDescriptor getControlTask​(java.lang.String name)

      Parameters:
        `name` - The name of the control methods.
      Returns:
        The metadata for the given a control method name.

    - #### getControlTasks

          java.util.Collection<MethodDescriptor> getControlTasks()

      Returns:
        A list of metadata about a all the control methods of this type.

    - #### isAssignableTo

          boolean isAssignableTo​(java.lang.Class<?> clazz)

      Parameters:
        `clazz` - A `ConfigurationItem` class object.
      Returns:
        Whether this type is a subtype or has the same type as the type of the given CI class.

    - #### isAssignableTo

          boolean isAssignableTo​(Type type)

      Parameters:
        `type` - A CI type.
      Returns:
        Whether this type is a subtype or has the same type as the given type.

    - #### getSuperClasses

          java.util.List<Type> getSuperClasses()

      Returns:
        The list of all the super classes of this `ConfigurationItem`.

    - #### getInterfaces

          java.util.Set<Type> getInterfaces()

      Returns:
        The set of all the interfaces this `ConfigurationItem` implements.

    - #### isVirtual

          boolean isVirtual()

      Returns:
        Whether this type is a virtual type.

    - #### isVersioned

          boolean isVersioned()

      Returns:
        Whether or not this is a versioned type, i.e. whether or not the JCR version history for CIs of this type is kept.

    - #### getIcon

          java.lang.String getIcon()

      Returns:
        The relative path to the icon for this type.

    - #### areEqual

          boolean areEqual​(ConfigurationItem item,
                           ConfigurationItem other)

      Returns:
        Whether or not the given CIs are considered to be equal.

    - #### newInstance

          <T extends ConfigurationItem> T newInstance​(java.lang.String id)

      Type Parameters:
        `T` - The `ConfigurationItem` class.
      Parameters:
        `id` - The `ConfigurationItem` id.
      Returns:
        A new CI instance of the given type and id.

    - #### toString

          java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### getDeployableType

          Type getDeployableType()

      Only applicable for `Deployed`s.
      Returns:
        The `Deployable` type that created this deployed.

    - #### getContainerType

          Type getContainerType()

      Only applicable for `Deployed`s.
      Returns:
        The `Container` type this deployed can be deployed to.

    - #### validate

          java.util.List<ValidationMessage> validate​(ConfigurationItem ci)

      Validates the values for each property of the CI.
      Parameters:
        `ci` - The `ConfigurationItem` to ve validated.
      Returns:
        A list of `ValidationMessage`s.

    - #### validate

          java.util.List<ValidationMessage> validate​(ExtendedValidationContext context,
                                                     ConfigurationItem ci)

    - #### validateInputHint

          java.util.List<ValidationMessage> validateInputHint​(ConfigurationItem ci)

    - #### isInspectable

          boolean isInspectable()

      Returns:
        Whether this type supports inspection.

    - #### getCreator

          CreatorDescriptor getCreator()