From 580bfcb702e63d76fa630b9d610478e153e41c4c Mon Sep 17 00:00:00 2001 From: quietone Date: Thu, 4 Apr 2024 17:31:20 +1300 Subject: [PATCH] Revert "Issue #3424509 by godotislate, quietone, sorlov, smustgrave, benjifisher, alexpott: Update MigratePluginManager to include both attribute and annotation class" This reverts commit c9d53fd473acc154b0404e906c23f352097af6cd. --- .../AttributeDiscoveryWithAnnotations.php | 4 +- .../src/Plugin/migrate/destination/Book.php | 7 +- .../src/Plugin/migrate/field/DateField.php | 24 ++--- .../Plugin/migrate/destination/EntityFile.php | 6 +- core/modules/migrate/migrate.api.php | 19 ++-- core/modules/migrate/migrate.services.yml | 8 +- .../src/Attribute/MigrateDestination.php | 53 ----------- .../migrate/src/Attribute/MigrateProcess.php | 50 ---------- .../migrate/src/Attribute/MigrateSource.php | 93 ------------------- .../MultipleProviderAttributeInterface.php | 44 --------- ...otatedClassDiscoveryAutomatedProviders.php | 29 +++++- ...otatedDiscoveryAutomatedProvidersTrait.php | 59 ------------ ...ributeClassDiscoveryAutomatedProviders.php | 42 --------- ...overyWithAnnotationsAutomatedProviders.php | 83 ----------------- .../Plugin/MigrateDestinationInterface.php | 2 +- .../MigrateDestinationPluginManager.php | 10 +- .../src/Plugin/MigratePluginManager.php | 18 +--- .../src/Plugin/MigrateProcessInterface.php | 2 +- .../src/Plugin/MigrateSourceInterface.php | 2 +- .../src/Plugin/MigrateSourcePluginManager.php | 33 +------ .../migrate/destination/DestinationBase.php | 2 +- .../src/Plugin/migrate/id_map/NullIdMap.php | 4 +- .../migrate/src/Plugin/migrate/id_map/Sql.php | 4 +- .../src/Plugin/migrate/process/Explode.php | 6 +- .../migrate/source/EmbeddedDataSource.php | 10 +- .../src/Plugin/migrate/source/EmptySource.php | 11 +-- .../migrate/source/SourcePluginBase.php | 2 +- .../modules/migrate/src/ProcessPluginBase.php | 2 +- ...migrate_source_annotation_bc_test.info.yml | 5 - .../source/MigrateSourceWithAnnotations.php | 50 ---------- ...SourceWithAnnotationsMultipleProviders.php | 29 ------ .../MigrateSourceAnnotationDiscoveryTest.php | 60 ------------ .../migrate_drupal.services.yml | 1 - .../src/Attribute/MigrateField.php | 74 --------------- .../src/Plugin/MigrateFieldPluginManager.php | 4 +- .../Plugin/migrate/field/FieldPluginBase.php | 2 +- .../Plugin/migrate/source/ContentEntity.php | 14 +-- 37 files changed, 105 insertions(+), 763 deletions(-) delete mode 100644 core/modules/migrate/src/Attribute/MigrateDestination.php delete mode 100644 core/modules/migrate/src/Attribute/MigrateProcess.php delete mode 100644 core/modules/migrate/src/Attribute/MigrateSource.php delete mode 100644 core/modules/migrate/src/Attribute/MultipleProviderAttributeInterface.php delete mode 100644 core/modules/migrate/src/Plugin/Discovery/AnnotatedDiscoveryAutomatedProvidersTrait.php delete mode 100644 core/modules/migrate/src/Plugin/Discovery/AttributeClassDiscoveryAutomatedProviders.php delete mode 100644 core/modules/migrate/src/Plugin/Discovery/AttributeDiscoveryWithAnnotationsAutomatedProviders.php delete mode 100644 core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/migrate_source_annotation_bc_test.info.yml delete mode 100644 core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/src/Plugin/migrate/source/MigrateSourceWithAnnotations.php delete mode 100644 core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/src/Plugin/migrate/source/MigrateSourceWithAnnotationsMultipleProviders.php delete mode 100644 core/modules/migrate/tests/src/Kernel/Plugin/source/MigrateSourceAnnotationDiscoveryTest.php delete mode 100644 core/modules/migrate_drupal/src/Attribute/MigrateField.php diff --git a/core/lib/Drupal/Core/Plugin/Discovery/AttributeDiscoveryWithAnnotations.php b/core/lib/Drupal/Core/Plugin/Discovery/AttributeDiscoveryWithAnnotations.php index e4d2a51a853..a54e8608755 100644 --- a/core/lib/Drupal/Core/Plugin/Discovery/AttributeDiscoveryWithAnnotations.php +++ b/core/lib/Drupal/Core/Plugin/Discovery/AttributeDiscoveryWithAnnotations.php @@ -114,7 +114,7 @@ class AttributeDiscoveryWithAnnotations extends AttributeClassDiscovery { * @see \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery::prepareAnnotationDefinition() * @see \Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery::prepareAnnotationDefinition() */ - protected function prepareAnnotationDefinition(AnnotationInterface $annotation, string $class): void { + private function prepareAnnotationDefinition(AnnotationInterface $annotation, string $class): void { $annotation->setClass($class); if (!$annotation->getProvider()) { $annotation->setProvider($this->getProviderFromNamespace($class)); @@ -133,7 +133,7 @@ class AttributeDiscoveryWithAnnotations extends AttributeClassDiscovery { * @see \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery::getAnnotationReader() * @see \Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery::getAnnotationReader() */ - protected function getAnnotationReader() : SimpleAnnotationReader { + private function getAnnotationReader() : SimpleAnnotationReader { if (!isset($this->annotationReader)) { $this->annotationReader = new SimpleAnnotationReader(); diff --git a/core/modules/book/src/Plugin/migrate/destination/Book.php b/core/modules/book/src/Plugin/migrate/destination/Book.php index 2f4ea334906..dcc5056c89a 100644 --- a/core/modules/book/src/Plugin/migrate/destination/Book.php +++ b/core/modules/book/src/Plugin/migrate/destination/Book.php @@ -3,14 +3,15 @@ namespace Drupal\book\Plugin\migrate\destination; use Drupal\Core\Entity\EntityInterface; -use Drupal\migrate\Attribute\MigrateDestination; use Drupal\migrate\Plugin\migrate\destination\EntityContentBase; use Drupal\migrate\Row; /** - * Provides migrate destination plugin for Book content. + * @MigrateDestination( + * id = "book", + * provider = "book" + * ) */ -#[MigrateDestination('book')] class Book extends EntityContentBase { /** diff --git a/core/modules/datetime/src/Plugin/migrate/field/DateField.php b/core/modules/datetime/src/Plugin/migrate/field/DateField.php index 9bfa3572e31..f6a33434d15 100644 --- a/core/modules/datetime/src/Plugin/migrate/field/DateField.php +++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php @@ -6,25 +6,25 @@ use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface; use Drupal\migrate\Plugin\MigrationInterface; use Drupal\migrate\MigrateException; use Drupal\migrate\Row; -use Drupal\migrate_drupal\Attribute\MigrateField; use Drupal\migrate_drupal\Plugin\migrate\field\FieldPluginBase; // cspell:ignore todate /** * Provides a field plugin for date and time fields. + * + * @MigrateField( + * id = "datetime", + * type_map = { + * "date" = "datetime", + * "datestamp" = "timestamp", + * "datetime" = "datetime", + * }, + * core = {6,7}, + * source_module = "date", + * destination_module = "datetime" + * ) */ -#[MigrateField( - id: 'datetime', - core: [6, 7], - type_map: [ - 'date' => 'datetime', - 'datestamp' => 'timestamp', - 'datetime' => 'datetime', - ], - source_module: 'date', - destination_module: 'datetime', -)] class DateField extends FieldPluginBase { /** diff --git a/core/modules/file/src/Plugin/migrate/destination/EntityFile.php b/core/modules/file/src/Plugin/migrate/destination/EntityFile.php index c953a71869a..08b946f53f9 100644 --- a/core/modules/file/src/Plugin/migrate/destination/EntityFile.php +++ b/core/modules/file/src/Plugin/migrate/destination/EntityFile.php @@ -3,15 +3,15 @@ namespace Drupal\file\Plugin\migrate\destination; use Drupal\Core\Field\Plugin\Field\FieldType\UriItem; -use Drupal\migrate\Attribute\MigrateDestination; use Drupal\migrate\Row; use Drupal\migrate\MigrateException; use Drupal\migrate\Plugin\migrate\destination\EntityContentBase; /** - * Provides migrate destination plugin for File entities. + * @MigrateDestination( + * id = "entity:file" + * ) */ -#[MigrateDestination('entity:file')] class EntityFile extends EntityContentBase { /** diff --git a/core/modules/migrate/migrate.api.php b/core/modules/migrate/migrate.api.php index 9b3ab67bb98..0339475ff0f 100644 --- a/core/modules/migrate/migrate.api.php +++ b/core/modules/migrate/migrate.api.php @@ -47,8 +47,8 @@ use Drupal\migrate\Row; * @section sec_source Migrate API source plugins * Migrate API source plugins implement * \Drupal\migrate\Plugin\MigrateSourceInterface and usually extend - * \Drupal\migrate\Plugin\migrate\source\SourcePluginBase. They have the - * \Drupal\migrate\Attribute\MigrateSource attribute and must be in + * \Drupal\migrate\Plugin\migrate\source\SourcePluginBase. They are annotated + * with \Drupal\migrate\Annotation\MigrateSource annotation and must be in * namespace subdirectory 'Plugin\migrate\source' under the namespace of the * module that defines them. Migrate API source plugins are managed by the * \Drupal\migrate\Plugin\MigrateSourcePluginManager class. @@ -59,8 +59,8 @@ use Drupal\migrate\Row; * @section sec_process Migrate API process plugins * Migrate API process plugins implement * \Drupal\migrate\Plugin\MigrateProcessInterface and usually extend - * \Drupal\migrate\ProcessPluginBase. They have the - * \Drupal\migrate\Attribute\MigrateProcess attribute and must be in + * \Drupal\migrate\ProcessPluginBase. They are annotated with + * \Drupal\migrate\Annotation\MigrateProcessPlugin annotation and must be in * namespace subdirectory 'Plugin\migrate\process' under the namespace of the * module that defines them. Migrate API process plugins are managed by the * \Drupal\migrate\Plugin\MigratePluginManager class. @@ -70,11 +70,12 @@ use Drupal\migrate\Row; * @section sec_destination Migrate API destination plugins * Migrate API destination plugins implement * \Drupal\migrate\Plugin\MigrateDestinationInterface and usually extend - * \Drupal\migrate\Plugin\migrate\destination\DestinationBase. They have the - * \Drupal\migrate\Attribute\MigrateDestination attribute and must be in - * namespace subdirectory 'Plugin\migrate\destination' under the namespace of - * the module that defines them. Migrate API destination plugins are managed by - * the \Drupal\migrate\Plugin\MigrateDestinationPluginManager class. + * \Drupal\migrate\Plugin\migrate\destination\DestinationBase. They are + * annotated with \Drupal\migrate\Annotation\MigrateDestination annotation and + * must be in namespace subdirectory 'Plugin\migrate\destination' under the + * namespace of the module that defines them. Migrate API destination plugins + * are managed by the \Drupal\migrate\Plugin\MigrateDestinationPluginManager + * class. * * @link https://api.drupal.org/api/drupal/namespace/Drupal!migrate!Plugin!migrate!destination List of destination plugins for Drupal configuration and content entities provided by the core Migrate module. @endlink * diff --git a/core/modules/migrate/migrate.services.yml b/core/modules/migrate/migrate.services.yml index b7068cf6825..d7ef2ded4b0 100644 --- a/core/modules/migrate/migrate.services.yml +++ b/core/modules/migrate/migrate.services.yml @@ -14,13 +14,7 @@ services: arguments: [source, '@container.namespaces', '@cache.discovery', '@module_handler'] plugin.manager.migrate.process: class: Drupal\migrate\Plugin\MigratePluginManager - arguments: - - process - - '@container.namespaces' - - '@cache.discovery' - - '@module_handler' - - 'Drupal\migrate\Attribute\MigrateProcess' - - 'Drupal\migrate\Annotation\MigrateProcessPlugin' + arguments: [process, '@container.namespaces', '@cache.discovery', '@module_handler', 'Drupal\migrate\Annotation\MigrateProcessPlugin'] plugin.manager.migrate.destination: class: Drupal\migrate\Plugin\MigrateDestinationPluginManager arguments: [destination, '@container.namespaces', '@cache.discovery', '@module_handler', '@entity_type.manager'] diff --git a/core/modules/migrate/src/Attribute/MigrateDestination.php b/core/modules/migrate/src/Attribute/MigrateDestination.php deleted file mode 100644 index 54e469b1381..00000000000 --- a/core/modules/migrate/src/Attribute/MigrateDestination.php +++ /dev/null @@ -1,53 +0,0 @@ -setProviders([$provider]); - } - - /** - * {@inheritdoc} - */ - public function getProviders(): array { - return $this->providers; - } - - /** - * {@inheritdoc} - */ - public function setProviders(array $providers): void { - if ($providers) { - parent::setProvider(reset($providers)); - } - else { - $this->provider = NULL; - } - $this->providers = $providers; - } - -} diff --git a/core/modules/migrate/src/Attribute/MultipleProviderAttributeInterface.php b/core/modules/migrate/src/Attribute/MultipleProviderAttributeInterface.php deleted file mode 100644 index 437ddfb8b9a..00000000000 --- a/core/modules/migrate/src/Attribute/MultipleProviderAttributeInterface.php +++ /dev/null @@ -1,44 +0,0 @@ -finder = new ClassFinder(); } + /** + * {@inheritdoc} + */ + protected function prepareAnnotationDefinition(AnnotationInterface $annotation, $class, BaseStaticReflectionParser $parser = NULL) { + if (!($annotation instanceof MultipleProviderAnnotationInterface)) { + throw new \LogicException('AnnotatedClassDiscoveryAutomatedProviders annotations must implement \Drupal\migrate\Annotation\MultipleProviderAnnotationInterface'); + } + $annotation->setClass($class); + $providers = $annotation->getProviders(); + // Loop through all the parent classes and add their providers (which we + // infer by parsing their namespaces) to the $providers array. + do { + $providers[] = $this->getProviderFromNamespace($parser->getNamespaceName()); + } while ($parser = StaticReflectionParser::getParentParser($parser, $this->finder)); + $providers = array_unique(array_filter($providers, function ($provider) { + return $provider && $provider !== 'component'; + })); + $annotation->setProviders($providers); + } + /** * {@inheritdoc} */ diff --git a/core/modules/migrate/src/Plugin/Discovery/AnnotatedDiscoveryAutomatedProvidersTrait.php b/core/modules/migrate/src/Plugin/Discovery/AnnotatedDiscoveryAutomatedProvidersTrait.php deleted file mode 100644 index aa9d8745a67..00000000000 --- a/core/modules/migrate/src/Plugin/Discovery/AnnotatedDiscoveryAutomatedProvidersTrait.php +++ /dev/null @@ -1,59 +0,0 @@ -setClass($class); - $providers = $annotation->getProviders(); - // Loop through all the parent classes and add their providers (which we - // infer by parsing their namespaces) to the $providers array. - do { - $providers[] = $this->getProviderFromNamespace($parser->getNamespaceName()); - } while ($parser = StaticReflectionParser::getParentParser($parser, $this->finder)); - $providers = array_diff(array_unique(array_filter($providers)), ['component']); - $annotation->setProviders($providers); - } - -} diff --git a/core/modules/migrate/src/Plugin/Discovery/AttributeClassDiscoveryAutomatedProviders.php b/core/modules/migrate/src/Plugin/Discovery/AttributeClassDiscoveryAutomatedProviders.php deleted file mode 100644 index c5691a57bf9..00000000000 --- a/core/modules/migrate/src/Plugin/Discovery/AttributeClassDiscoveryAutomatedProviders.php +++ /dev/null @@ -1,42 +0,0 @@ -setClass($class); - - // Loop through all the parent classes and add their providers (which we - // infer by parsing their namespaces) to the $providers array. - $providers = $attribute->getProviders(); - do { - $providers[] = $this->getProviderFromNamespace($class); - } while (($class = get_parent_class($class)) !== FALSE); - - $providers = array_diff(array_unique(array_filter($providers)), ['component']); - $attribute->setProviders($providers); - } - -} diff --git a/core/modules/migrate/src/Plugin/Discovery/AttributeDiscoveryWithAnnotationsAutomatedProviders.php b/core/modules/migrate/src/Plugin/Discovery/AttributeDiscoveryWithAnnotationsAutomatedProviders.php deleted file mode 100644 index fab94bf307f..00000000000 --- a/core/modules/migrate/src/Plugin/Discovery/AttributeDiscoveryWithAnnotationsAutomatedProviders.php +++ /dev/null @@ -1,83 +0,0 @@ -finder = new ClassFinder(); - $this->attributeDiscovery = new AttributeClassDiscoveryAutomatedProviders($subdir, $rootNamespaces, $pluginDefinitionAttributeName); - } - - /** - * {@inheritdoc} - */ - protected function prepareAttributeDefinition(AttributeInterface $attribute, string $class): void { - $this->attributeDiscovery->prepareAttributeDefinition($attribute, $class); - } - - /** - * {@inheritdoc} - */ - protected function parseClass(string $class, \SplFileInfo $fileinfo): array { - // The filename is already known, so there is no need to find the - // file. However, StaticReflectionParser needs a finder, so use a - // mock version. - $finder = MockFileFinder::create($fileinfo->getPathName()); - $parser = new BaseStaticReflectionParser($class, $finder, FALSE); - - $reflection_class = $parser->getReflectionClass(); - // @todo Handle deprecating definitions discovery via annotations in - // https://www.drupal.org/project/drupal/issues/3265945. - /** @var \Drupal\Component\Annotation\AnnotationInterface $annotation */ - if ($annotation = $this->getAnnotationReader()->getClassAnnotation($reflection_class, $this->pluginDefinitionAnnotationName)) { - $this->prepareAnnotationDefinition($annotation, $class, $parser); - return ['id' => $annotation->getId(), 'content' => $annotation->get()]; - } - - // Annotations use static reflection and are able to analyze a class that - // extends classes or uses traits that do not exist. Attribute discovery - // will trigger a fatal error with such classes, so only call it if the - // class has a class attribute. - if ($reflection_class->hasClassAttribute($this->pluginDefinitionAttributeName)) { - return parent::parseClass($class, $fileinfo); - } - return ['id' => NULL, 'content' => NULL]; - } - -} diff --git a/core/modules/migrate/src/Plugin/MigrateDestinationInterface.php b/core/modules/migrate/src/Plugin/MigrateDestinationInterface.php index d2dbe2f68ab..d2c7fb7ee99 100644 --- a/core/modules/migrate/src/Plugin/MigrateDestinationInterface.php +++ b/core/modules/migrate/src/Plugin/MigrateDestinationInterface.php @@ -13,7 +13,7 @@ use Drupal\migrate\Row; * * @see \Drupal\migrate\Plugin\migrate\destination\DestinationBase * @see \Drupal\migrate\Plugin\MigrateDestinationPluginManager - * @see \Drupal\migrate\Attribute\MigrateDestination + * @see \Drupal\migrate\Annotation\MigrateDestination * @see plugin_api * * @ingroup migration diff --git a/core/modules/migrate/src/Plugin/MigrateDestinationPluginManager.php b/core/modules/migrate/src/Plugin/MigrateDestinationPluginManager.php index 6b7514435f2..b65515c3afe 100644 --- a/core/modules/migrate/src/Plugin/MigrateDestinationPluginManager.php +++ b/core/modules/migrate/src/Plugin/MigrateDestinationPluginManager.php @@ -5,14 +5,13 @@ namespace Drupal\migrate\Plugin; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; -use Drupal\migrate\Attribute\MigrateDestination; /** * Plugin manager for migrate destination plugins. * * @see \Drupal\migrate\Plugin\MigrateDestinationInterface * @see \Drupal\migrate\Plugin\migrate\destination\DestinationBase - * @see \Drupal\migrate\Attribute\MigrateDestination + * @see \Drupal\migrate\Annotation\MigrateDestination * @see plugin_api * * @ingroup migration @@ -41,15 +40,12 @@ class MigrateDestinationPluginManager extends MigratePluginManager { * The module handler to invoke the alter hook with. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. - * @param string $attribute - * (optional) The attribute class name. Defaults to - * 'Drupal\migrate\Attribute\MigrateDestination'. * @param string $annotation * (optional) The annotation class name. Defaults to * 'Drupal\migrate\Annotation\MigrateDestination'. */ - public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, EntityTypeManagerInterface $entity_type_manager, $attribute = MigrateDestination::class, $annotation = 'Drupal\migrate\Annotation\MigrateDestination') { - parent::__construct($type, $namespaces, $cache_backend, $module_handler, $attribute, $annotation); + public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, EntityTypeManagerInterface $entity_type_manager, $annotation = 'Drupal\migrate\Annotation\MigrateDestination') { + parent::__construct($type, $namespaces, $cache_backend, $module_handler, $annotation); $this->entityTypeManager = $entity_type_manager; } diff --git a/core/modules/migrate/src/Plugin/MigratePluginManager.php b/core/modules/migrate/src/Plugin/MigratePluginManager.php index 9eba756ab1b..b3645dbdd0e 100644 --- a/core/modules/migrate/src/Plugin/MigratePluginManager.php +++ b/core/modules/migrate/src/Plugin/MigratePluginManager.php @@ -2,8 +2,6 @@ namespace Drupal\migrate\Plugin; -use Drupal\Component\Plugin\Attribute\AttributeInterface; -use Drupal\Component\Plugin\Attribute\PluginID; use Drupal\Component\Plugin\Factory\DefaultFactory; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; @@ -13,10 +11,10 @@ use Drupal\Core\Plugin\DefaultPluginManager; * Manages migrate plugins. * * @see hook_migrate_info_alter() - * @see \Drupal\migrate\Attribute\MigrateSource + * @see \Drupal\migrate\Annotation\MigrateSource * @see \Drupal\migrate\Plugin\MigrateSourceInterface * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase - * @see \Drupal\migrate\Attribute\MigrateProcess + * @see \Drupal\migrate\Annotation\MigrateProcessPlugin * @see \Drupal\migrate\Plugin\MigrateProcessInterface * @see \Drupal\migrate\Plugin\migrate\process\ProcessPluginBase * @see plugin_api @@ -38,20 +36,12 @@ class MigratePluginManager extends DefaultPluginManager implements MigratePlugin * Cache backend instance to use. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler to invoke the alter hook with. - * @param string $attribute - * (optional) The attribute class name. Defaults to - * 'Drupal\Component\Plugin\Attribute\PluginID'. * @param string $annotation * (optional) The annotation class name. Defaults to * 'Drupal\Component\Annotation\PluginID'. */ - public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, $attribute = PluginID::class, $annotation = 'Drupal\Component\Annotation\PluginID') { - if (!is_subclass_of($attribute, AttributeInterface::class)) { - // Backward compatibility. - $annotation = $attribute; - $attribute = PluginID::class; - } - parent::__construct("Plugin/migrate/$type", $namespaces, $module_handler, NULL, $attribute, $annotation); + public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, $annotation = 'Drupal\Component\Annotation\PluginID') { + parent::__construct("Plugin/migrate/$type", $namespaces, $module_handler, NULL, $annotation); $this->alterInfo('migrate_' . $type . '_info'); $this->setCacheBackend($cache_backend, 'migrate_plugins_' . $type); } diff --git a/core/modules/migrate/src/Plugin/MigrateProcessInterface.php b/core/modules/migrate/src/Plugin/MigrateProcessInterface.php index 7d2d365d881..6b3832c89b6 100644 --- a/core/modules/migrate/src/Plugin/MigrateProcessInterface.php +++ b/core/modules/migrate/src/Plugin/MigrateProcessInterface.php @@ -15,7 +15,7 @@ use Drupal\migrate\Row; * * @see \Drupal\migrate\Plugin\MigratePluginManager * @see \Drupal\migrate\ProcessPluginBase - * @see \Drupal\migrate\Attribute\MigrateProcess + * @see \Drupal\migrate\Annotation\MigrateProcessPlugin * @see plugin_api * * @ingroup migration diff --git a/core/modules/migrate/src/Plugin/MigrateSourceInterface.php b/core/modules/migrate/src/Plugin/MigrateSourceInterface.php index b05236ad369..f33dc68cbc8 100644 --- a/core/modules/migrate/src/Plugin/MigrateSourceInterface.php +++ b/core/modules/migrate/src/Plugin/MigrateSourceInterface.php @@ -9,7 +9,7 @@ use Drupal\migrate\Row; * Defines an interface for migrate sources. * * @see \Drupal\migrate\Plugin\MigratePluginManager - * @see \Drupal\migrate\Attribute\MigrateSource + * @see \Drupal\migrate\Annotation\MigrateSource * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase * @see plugin_api * diff --git a/core/modules/migrate/src/Plugin/MigrateSourcePluginManager.php b/core/modules/migrate/src/Plugin/MigrateSourcePluginManager.php index 74fb59b5944..965da5dd766 100644 --- a/core/modules/migrate/src/Plugin/MigrateSourcePluginManager.php +++ b/core/modules/migrate/src/Plugin/MigrateSourcePluginManager.php @@ -4,10 +4,8 @@ namespace Drupal\migrate\Plugin; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; -use Drupal\Core\Plugin\Discovery\ContainerDerivativeDiscoveryDecorator; use Drupal\migrate\Plugin\Discovery\AnnotatedClassDiscoveryAutomatedProviders; -use Drupal\migrate\Plugin\Discovery\AttributeClassDiscoveryAutomatedProviders; -use Drupal\migrate\Plugin\Discovery\AttributeDiscoveryWithAnnotationsAutomatedProviders; +use Drupal\Core\Plugin\Discovery\ContainerDerivativeDiscoveryDecorator; use Drupal\migrate\Plugin\Discovery\ProviderFilterDecorator; /** @@ -15,7 +13,7 @@ use Drupal\migrate\Plugin\Discovery\ProviderFilterDecorator; * * @see \Drupal\migrate\Plugin\MigrateSourceInterface * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase - * @see \Drupal\migrate\Attribute\MigrateSource + * @see \Drupal\migrate\Annotation\MigrateSource * @see plugin_api * * @ingroup migration @@ -37,7 +35,7 @@ class MigrateSourcePluginManager extends MigratePluginManager { * The module handler to invoke the alter hook with. */ public function __construct($type, \Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { - parent::__construct($type, $namespaces, $cache_backend, $module_handler, 'Drupal\migrate\Attribute\MigrateSource', 'Drupal\migrate\Annotation\MigrateSource'); + parent::__construct($type, $namespaces, $cache_backend, $module_handler, 'Drupal\migrate\Annotation\MigrateSource'); } /** @@ -45,30 +43,7 @@ class MigrateSourcePluginManager extends MigratePluginManager { */ protected function getDiscovery() { if (!$this->discovery) { - if (isset($this->pluginDefinitionAttributeName) && isset($this->pluginDefinitionAnnotationName)) { - $discovery = new AttributeDiscoveryWithAnnotationsAutomatedProviders( - $this->subdir, - $this->namespaces, - $this->pluginDefinitionAttributeName, - $this->pluginDefinitionAnnotationName, - $this->additionalAnnotationNamespaces, - ); - } - elseif (isset($this->pluginDefinitionAttributeName)) { - $discovery = new AttributeClassDiscoveryAutomatedProviders( - $this->subdir, - $this->namespaces, - $this->pluginDefinitionAttributeName, - ); - } - else { - $discovery = new AnnotatedClassDiscoveryAutomatedProviders( - $this->subdir, - $this->namespaces, - $this->pluginDefinitionAnnotationName, - $this->additionalAnnotationNamespaces, - ); - } + $discovery = new AnnotatedClassDiscoveryAutomatedProviders($this->subdir, $this->namespaces, $this->pluginDefinitionAnnotationName, $this->additionalAnnotationNamespaces); $this->discovery = new ContainerDerivativeDiscoveryDecorator($discovery); } return $this->discovery; diff --git a/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php index 5712613e218..4a7fc59d827 100644 --- a/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php +++ b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php @@ -21,7 +21,7 @@ use Drupal\migrate\Plugin\RequirementsInterface; * information, refer to \Drupal\migrate\Plugin\MigrateDestinationInterface. * * @see \Drupal\migrate\Plugin\MigrateDestinationPluginManager - * @see \Drupal\migrate\Attribute\MigrateDestination + * @see \Drupal\migrate\Annotation\MigrateDestination * @see plugin_api * * @ingroup migration diff --git a/core/modules/migrate/src/Plugin/migrate/id_map/NullIdMap.php b/core/modules/migrate/src/Plugin/migrate/id_map/NullIdMap.php index a6b2e3339e5..80c5da68a5a 100644 --- a/core/modules/migrate/src/Plugin/migrate/id_map/NullIdMap.php +++ b/core/modules/migrate/src/Plugin/migrate/id_map/NullIdMap.php @@ -2,7 +2,6 @@ namespace Drupal\migrate\Plugin\migrate\id_map; -use Drupal\Component\Plugin\Attribute\PluginID; use Drupal\Core\Plugin\PluginBase; use Drupal\migrate\MigrateMessageInterface; use Drupal\migrate\Plugin\MigrateIdMapInterface; @@ -13,8 +12,9 @@ use Drupal\migrate\Row; * Defines the null ID map implementation. * * This serves as a dummy in order to not store anything. + * + * @PluginID("null") */ -#[PluginID('null')] class NullIdMap extends PluginBase implements MigrateIdMapInterface { /** diff --git a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php index d66d3ce2fb2..b9261d09894 100644 --- a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php +++ b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php @@ -2,7 +2,6 @@ namespace Drupal\migrate\Plugin\migrate\id_map; -use Drupal\Component\Plugin\Attribute\PluginID; use Drupal\Core\Database\DatabaseException; use Drupal\Core\Database\DatabaseExceptionWrapper; use Drupal\Core\Database\Exception\SchemaTableKeyTooLargeException; @@ -31,8 +30,9 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; * * It creates one map and one message table per migration entity to store the * relevant information. + * + * @PluginID("sql") */ -#[PluginID('sql')] class Sql extends PluginBase implements MigrateIdMapInterface, ContainerFactoryPluginInterface, HighestIdInterface { /** diff --git a/core/modules/migrate/src/Plugin/migrate/process/Explode.php b/core/modules/migrate/src/Plugin/migrate/process/Explode.php index c6d90249265..38a58ed4a40 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Explode.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Explode.php @@ -2,7 +2,6 @@ namespace Drupal\migrate\Plugin\migrate\process; -use Drupal\migrate\Attribute\MigrateProcess; use Drupal\migrate\ProcessPluginBase; use Drupal\migrate\MigrateException; use Drupal\migrate\MigrateExecutableInterface; @@ -87,8 +86,11 @@ use Drupal\migrate\Row; * configuration, if foo is '', NULL or FALSE, then bar will be []. * * @see \Drupal\migrate\Plugin\MigrateProcessInterface + * + * @MigrateProcessPlugin( + * id = "explode" + * ) */ -#[MigrateProcess('explode')] class Explode extends ProcessPluginBase { /** diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php index 251df66accb..a61a951f3e0 100644 --- a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php +++ b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php @@ -2,7 +2,6 @@ namespace Drupal\migrate\Plugin\migrate\source; -use Drupal\migrate\Attribute\MigrateSource; use Drupal\migrate\Plugin\MigrationInterface; /** @@ -41,11 +40,12 @@ use Drupal\migrate\Plugin\MigrationInterface; * * For additional configuration keys, refer to the parent class: * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase + * + * @MigrateSource( + * id = "embedded_data", + * source_module = "migrate" + * ) */ -#[MigrateSource( - id: 'embedded_data', - source_module: 'migrate' -)] class EmbeddedDataSource extends SourcePluginBase { /** diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php index ee56876cdc0..2991aeec7a2 100644 --- a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php +++ b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php @@ -2,8 +2,6 @@ namespace Drupal\migrate\Plugin\migrate\source; -use Drupal\migrate\Attribute\MigrateSource; - /** * Source returning a row based on the constants provided. * @@ -23,11 +21,12 @@ use Drupal\migrate\Attribute\MigrateSource; * * For additional configuration keys, refer to the parent class: * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase + * + * @MigrateSource( + * id = "empty", + * source_module = "migrate" + * ) */ -#[MigrateSource( - id: 'empty', - source_module: 'migrate', -)] class EmptySource extends SourcePluginBase { /** diff --git a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php index e98d41975d0..e6d5d786dd7 100644 --- a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php +++ b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php @@ -105,7 +105,7 @@ use Drupal\migrate\Row; * In this example, the constant 'foo' is defined with a value of 'bar'. It is * later used in the process pipeline to set the value of the field baz. * - * @see \Drupal\migrate\Attribute\MigrateSource + * @see \Drupal\migrate\Annotation\MigrateSource * @see \Drupal\migrate\Plugin\MigrateIdMapInterface * @see \Drupal\migrate\Plugin\MigratePluginManager * @see \Drupal\migrate\Plugin\MigrateSourceInterface diff --git a/core/modules/migrate/src/ProcessPluginBase.php b/core/modules/migrate/src/ProcessPluginBase.php index e7b1fcc8312..5c6978ec335 100644 --- a/core/modules/migrate/src/ProcessPluginBase.php +++ b/core/modules/migrate/src/ProcessPluginBase.php @@ -21,7 +21,7 @@ use Drupal\migrate\Plugin\MigrateProcessInterface; * @see https://www.drupal.org/node/2129651 * @see \Drupal\migrate\Plugin\MigratePluginManager * @see \Drupal\migrate\Plugin\MigrateProcessInterface - * @see \Drupal\migrate\Attribute\MigrateProcess + * @see \Drupal\migrate\Annotation\MigrateProcessPlugin * @see \Drupal\migrate\Plugin\migrate\process\SkipOnEmpty * @see d7_field_formatter_settings.yml * @see plugin_api diff --git a/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/migrate_source_annotation_bc_test.info.yml b/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/migrate_source_annotation_bc_test.info.yml deleted file mode 100644 index a87b6c047ad..00000000000 --- a/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/migrate_source_annotation_bc_test.info.yml +++ /dev/null @@ -1,5 +0,0 @@ -name: 'Migrate module source annotation bc tests' -type: module -description: 'Support module for source plugin annotation discovery backwards compatibility tests' -package: Testing -version: VERSION diff --git a/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/src/Plugin/migrate/source/MigrateSourceWithAnnotations.php b/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/src/Plugin/migrate/source/MigrateSourceWithAnnotations.php deleted file mode 100644 index 145adcaa59a..00000000000 --- a/core/modules/migrate/tests/modules/migrate_source_annotation_bc_test/src/Plugin/migrate/source/MigrateSourceWithAnnotations.php +++ /dev/null @@ -1,50 +0,0 @@ -container->get('plugin.manager.migrate.source')->getDefinitions(); - ksort($source_plugins); - $this->assertSame($expected, array_keys($source_plugins)); - - // Next, test discovery of both attributed and annotated plugins. The - // annotated plugin with multiple providers depends on migrate_drupal and - // should not be discovered with it uninstalled. - $expected = ['annotated', 'embedded_data', 'empty']; - $this->enableModules(['migrate_source_annotation_bc_test']); - $source_plugins = $this->container->get('plugin.manager.migrate.source')->getDefinitions(); - ksort($source_plugins); - $this->assertSame($expected, array_keys($source_plugins)); - - // Install migrate_drupal and now the annotated plugin that depends on it - // should be discovered. - $expected = [ - 'annotated', - 'annotated_multiple_providers', - 'embedded_data', - 'empty', - ]; - $this->enableModules(['migrate_drupal']); - $source_plugins = $this->container->get('plugin.manager.migrate.source')->getDefinitions(); - // Confirming here the that the source plugins that migrate and - // migrate_source_annotation_bc_test are discovered. There are additional - // plugins provided by migrate_drupal, but they do not need to be enumerated - // here. - $this->assertSame(array_diff($expected, array_keys($source_plugins)), []); - } - -} diff --git a/core/modules/migrate_drupal/migrate_drupal.services.yml b/core/modules/migrate_drupal/migrate_drupal.services.yml index 9e3662341b9..80444d04750 100644 --- a/core/modules/migrate_drupal/migrate_drupal.services.yml +++ b/core/modules/migrate_drupal/migrate_drupal.services.yml @@ -6,7 +6,6 @@ services: - '@container.namespaces' - '@cache.discovery' - '@module_handler' - - '\Drupal\migrate_drupal\Attribute\MigrateField' - '\Drupal\migrate_drupal\Annotation\MigrateField' Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface: '@plugin.manager.migrate.field' logger.channel.migrate_drupal: diff --git a/core/modules/migrate_drupal/src/Attribute/MigrateField.php b/core/modules/migrate_drupal/src/Attribute/MigrateField.php deleted file mode 100644 index ffb529e9800..00000000000 --- a/core/modules/migrate_drupal/src/Attribute/MigrateField.php +++ /dev/null @@ -1,74 +0,0 @@ -