Change record status: 
Project: 
Introduced in branch: 
8.0.x
Introduced in version: 
8.0.0
Description: 

Specific annotation classes have been created for the following plugins, and these plugin implementations are using the specific annotation instead of the generic @Plugin annotation.

  • @AggregatorFetcher
  • @AggregatorParser
  • @AggregatorProcessor
  • @Archiver
  • @CKEditorPlugin
  • @Condition
  • @Constraint
  • @Editor
  • @EntityReferenceSelection
  • @FieldWidget
  • @ImageToolkit
  • @InPlaceEditor
  • @LanguageNegotiation
  • @RestResource
  • @Tip

Plugin types introduced in contrib modules do not currently require a specific annotation class, and their plugins may still use the @Plugin annotation. However, such plugin types have no place to document the metadata required in their plugin implementations. Specific annotation classes are thus preferred.

Most plugin types in core have been using type-specific annotations for quite some time. LanguageNegotiation and Constraint plugins are the most recent conversions.

Contrib modules implementing plugin types provided by core should update their annotations if they use @Plugin.

Example for the Email plugin

Before

/**
  * @Plugin(
  *   id = "Email",
  *   label = @Translation("Email", context = "Validation")
  * )
  */

After

/**
  * @Constraint(
  *   id = "Email",
  *   label = @Translation("Email", context = "Validation")
  * )
  */
Impacts: 
Module developers