ObjectClassDefinition
Date: 2016-06-25

org.osgi.service.metatype.annotations

## Annotation Type ObjectClassDefinition

-     @Retention(value=CLASS)
      @Target(value=TYPE)
      public @interface ObjectClassDefinition

  Generate a Meta Type Resource using the annotated type.

  This annotation can be used without defining any element values since defaults can be generated from the annotated type. Each method of the annotated type has an implied `AttributeDefinition` annotation if not explicitly annotated.

  This annotation may only be used on annotation types and interface types. Use on concrete or abstract class types is unsupported. If applied to an interface then all methods inherited from super types are included as attributes.

  This annotation is not processed at runtime. It must be processed by tools and used to generate a Meta Type Resource document for the bundle.

  See Also:
    "The OCD element of a Meta Type Resource."

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `java.lang.String` | `description` The human readable description of this ObjectClassDefinition.
    `java.lang.String[]` | `factoryPid` The factory PIDs associated with this ObjectClassDefinition.
    `Icon[]` | `icon` The icon resources associated with this ObjectClassDefinition.
    `java.lang.String` | `id` The id of this ObjectClassDefinition.
    `java.lang.String` | `localization` The localization resource of this ObjectClassDefinition.
    `java.lang.String` | `name` The human readable name of this ObjectClassDefinition.
    `java.lang.String[]` | `pid` The PIDs associated with this ObjectClassDefinition.

- - ### Element Detail

    - #### id

          public abstract java.lang.String id

      The id of this ObjectClassDefinition.

      If not specified, the id of this ObjectClassDefinition is the fully qualified name of the annotated type using the dollar sign (`'$'` \u0024) to separate nested class names from the name of their enclosing class. The id is not to be confused with a PID which can be specified by the `pid()` or `factoryPid()` element.

      See Also:
        "The id attribute of the OCD element of a Meta Type Resource."
      Default:
        ""

    - #### name

          public abstract java.lang.String name

      The human readable name of this ObjectClassDefinition.

      If not specified, the name of this ObjectClassDefinition is derived from the `id()`. For example, low line (`'_'` \u005F) and dollar sign (`'$'` \u0024) are replaced with space (`' '` \u0020) and space is inserted between camel case words.

      If the name begins with the percent sign (`'%'` \u0025), the name can be `localized`.

      See Also:
        "The name attribute of the OCD element of a Meta Type Resource."
      Default:
        ""

    - #### description

          public abstract java.lang.String description

      The human readable description of this ObjectClassDefinition.

      If not specified, the description of this ObjectClassDefinition is the empty string.

      If the description begins with the percent sign (`'%'` \u0025), the description can be `localized`.

      See Also:
        "The description attribute of the OCD element of a Meta Type Resource."
      Default:
        ""

    - #### localization

          public abstract java.lang.String localization

      The localization resource of this ObjectClassDefinition.

      This refers to a resource property entry in the bundle that can be augmented with locale information. If not specified, the localization resource for this ObjectClassDefinition is the string "OSGI-INF/l10n/" followed by the `id()`.

      See Also:
        "The localization attribute of the MetaData element of a Meta Type Resource."
      Default:
        ""

    - #### pid

          public abstract java.lang.String[] pid

      The PIDs associated with this ObjectClassDefinition.

      For each specified PID, a `Designate` element with a pid attribute is generated that `references` this ObjectClassDefinition.

      The `Designate` annotation can also be used to associate a Declarative Services component with an ObjectClassDefinition and generate a `Designate` element.

      See Also:
        "The pid attribute of the Designate element of a Meta Type Resource.", `Designate`
      Default:
        {}

    - #### factoryPid

          public abstract java.lang.String[] factoryPid

      The factory PIDs associated with this ObjectClassDefinition.

      For each specified factory PID, a `Designate` element with a factoryPid attribute is generated that `references` this ObjectClassDefinition.

      The `Designate` annotation can also be used to associate a Declarative Services component with an ObjectClassDefinition and generate a `Designate` element.

      See Also:
        "The factoryPid attribute of the Designate element of a Meta Type Resource.", `Designate`
      Default:
        {}

    - #### icon

          public abstract Icon[] icon

      The icon resources associated with this ObjectClassDefinition.

      For each specified `Icon`, an `Icon` element is generated for this ObjectClassDefinition. If not specified, no `Icon` elements will be generated.

      See Also:
        "The Icon element of a Meta Type Resource."
      Default:
        {}