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

# Annotation Interface Delegate

@Documented @Retention(RUNTIME) @Target(METHOD) @Inherited public @interface Delegate
A delegate can execute either: - a control task on a `ConfigurationItem`, to perform some action. - a creator method when creating a `ConfigurationItem`

A @Delegate method should adhere to the following rules:

- For Control Task:
  - The constructor of the object should take no arguments
  - The method should take the following 3 parameters:
    1. A ConfigurationItem (The item the method is invoked on).
    2. A String (the name of the method invoked).
    3. A Map<String, String> (The attributes of the method invoked).
  - The method should return a List<`Step`>
- For Creator:
  - The method should be static
  - The method should take the following 1 or 2 parameters:
    1. A CreatorContext.
    2. Optional: A Map<String, String> (The attributes of the method invoked).
  - The method should return void.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `Delegate.Use`

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `name`

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `Delegate.Use`
  `use`

- ## Element Details

  - ### name

    String name

  - ### use

    Delegate.Use use
    Default:
      `CONTROL_TASK`