diff -u b/core/modules/migrate/src/Event/MigrateImportEvent.php b/core/modules/migrate/src/Event/MigrateImportEvent.php --- b/core/modules/migrate/src/Event/MigrateImportEvent.php +++ b/core/modules/migrate/src/Event/MigrateImportEvent.php @@ -16,7 +16,7 @@ class MigrateImportEvent extends Event { /** - * Migration object. + * Migration entity. * * @var \Drupal\migrate\Entity\MigrationInterface */ @@ -26,17 +26,17 @@ * Constructs an import event object. * * @param \Drupal\migrate\Entity\MigrationInterface $migration - * Migration object. + * Migration entity. */ public function __construct(MigrationInterface $migration) { $this->migration = $migration; } /** - * Gets migration object. + * Gets migration entity. * * @return \Drupal\migrate\Entity\MigrationInterface - * The migration object involved. + * The migration entity involved. */ public function getMigration() { return $this->migration; diff -u b/core/modules/migrate/src/Event/MigrateMapDeleteEvent.php b/core/modules/migrate/src/Event/MigrateMapDeleteEvent.php --- b/core/modules/migrate/src/Event/MigrateMapDeleteEvent.php +++ b/core/modules/migrate/src/Event/MigrateMapDeleteEvent.php @@ -16,7 +16,7 @@ class MigrateMapDeleteEvent extends Event { /** - * Map object. + * Map plugin. * * @var \Drupal\migrate\Plugin\MigrateIdMapInterface */ @@ -33,9 +33,9 @@ * Constructs a migration map delete event object. * * @param \Drupal\migrate\Plugin\MigrateIdMapInterface $map - * Map object. + * Map plugin. * @param array $source_id - * Array of source ID fields representing the object being deleted from the map. + * Array of source ID fields representing the object being deleted from the map. */ public function __construct(MigrateIdMapInterface $map, array $source_id) { $this->map = $map; @@ -43,10 +43,10 @@ } /** - * Gets map object. + * Gets map plugin. * * @return \Drupal\migrate\Plugin\MigrateIdMapInterface - * The map object that caused the event to fire. + * The map plugin that caused the event to fire. */ public function getMap() { return $this->map; diff -u b/core/modules/migrate/src/Event/MigrateMapSaveEvent.php b/core/modules/migrate/src/Event/MigrateMapSaveEvent.php --- b/core/modules/migrate/src/Event/MigrateMapSaveEvent.php +++ b/core/modules/migrate/src/Event/MigrateMapSaveEvent.php @@ -16,7 +16,7 @@ class MigrateMapSaveEvent extends Event { /** - * Map object. + * Map plugin. * * @var \Drupal\migrate\Plugin\MigrateIdMapInterface */ @@ -33,9 +33,9 @@ * Constructs a migration map event object. * * @param \Drupal\migrate\Plugin\MigrateIdMapInterface $map - * Map object. + * Map plugin. * @param array $fields - * Array of fields being saved to the map. + * Array of fields being saved to the map. */ public function __construct(MigrateIdMapInterface $map, array $fields) { $this->map = $map; @@ -43,10 +43,10 @@ } /** - * Gets map object. + * Gets map plugin. * * @return \Drupal\migrate\Plugin\MigrateIdMapInterface - * The map object that caused the event to fire. + * The map plugin that caused the event to fire. */ public function getMap() { return $this->map; diff -u b/core/modules/migrate/src/Event/MigratePostRowSaveEvent.php b/core/modules/migrate/src/Event/MigratePostRowSaveEvent.php --- b/core/modules/migrate/src/Event/MigratePostRowSaveEvent.php +++ b/core/modules/migrate/src/Event/MigratePostRowSaveEvent.php @@ -19,7 +19,7 @@ * Constructs a post-save event object. * * @param \Drupal\migrate\Entity\MigrationInterface $migration - * Migration object. + * Migration entity. * @param \Drupal\migrate\Row $row * Row object. * @param array|bool $destination_id_values diff -u b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php --- b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php +++ b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php @@ -17,14 +17,14 @@ class MigratePreRowSaveEvent extends Event { /** - * Migration object. + * Row object. * * @var \Drupal\migrate\Row */ protected $row; /** - * Row object. + * Migration entity. * * @var \Drupal\migrate\Entity\MigrationInterface */ @@ -34,7 +34,7 @@ * Constructs a pre-save event object. * * @param \Drupal\migrate\Entity\MigrationInterface $migration - * Migration object. + * Migration entity. */ public function __construct(MigrationInterface $migration, Row $row) { $this->migration = $migration; @@ -42,10 +42,10 @@ } /** - * Gets migration object. + * Gets migration entity. * * @return \Drupal\migrate\Entity\MigrationInterface - * The migration object being imported. + * The migration entity being imported. */ public function getMigration() { return $this->migration; diff -u b/core/modules/migrate/src/MigrateExecutable.php b/core/modules/migrate/src/MigrateExecutable.php --- b/core/modules/migrate/src/MigrateExecutable.php +++ b/core/modules/migrate/src/MigrateExecutable.php @@ -192,13 +192,16 @@ * The migration to run. * @param \Drupal\migrate\MigrateMessageInterface $message * The message to record. + * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher + * The event dispatcher. * * @throws \Drupal\migrate\MigrateException */ - public function __construct(MigrationInterface $migration, MigrateMessageInterface $message) { + public function __construct(MigrationInterface $migration, MigrateMessageInterface $message, EventDispatcherInterface $event_dispatcher = NULL) { $this->migration = $migration; $this->message = $message; $this->migration->getIdMap()->setMessage($message); + $this->eventDispatcher = $event_dispatcher; // Record the memory limit in bytes $limit = trim(ini_get('memory_limit')); if ($limit == '-1') { diff -u b/core/modules/migrate/src/Tests/MigrateEventsTest.php b/core/modules/migrate/src/Tests/MigrateEventsTest.php --- b/core/modules/migrate/src/Tests/MigrateEventsTest.php +++ b/core/modules/migrate/src/Tests/MigrateEventsTest.php @@ -7,6 +7,13 @@ namespace Drupal\migrate\Tests; +use Drupal\Component\Plugin\Discovery\StaticDiscovery; +use Drupal\migrate\Entity\Migration; +use Drupal\migrate\Event\MigrateImportEvent; +use Drupal\migrate\Event\MigrateMapDeleteEvent; +use Drupal\migrate\Event\MigrateMapSaveEvent; +use Drupal\migrate\Event\MigratePostRowSaveEvent; +use Drupal\migrate\Event\MigratePreRowSaveEvent; use Drupal\migrate\MigrateMessage; use Drupal\migrate\Entity\MigrationInterface; use Drupal\migrate\Event\MigrateEvents; @@ -32,7 +39,18 @@ */ public function setUp() { parent::setUp(); - $this->installConfig(['migrate', 'migrate_events_test']); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::MAP_SAVE, + array($this, 'mapSaveEventRecorder')); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::MAP_DELETE, + array($this, 'mapDeleteEventRecorder')); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::PRE_IMPORT, + array($this, 'preImportEventRecorder')); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::POST_IMPORT, + array($this, 'postImportEventRecorder')); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::PRE_ROW_SAVE, + array($this, 'preRowSaveEventRecorder')); + \Drupal::service('event_dispatcher')->addListener(MigrateEvents::POST_ROW_SAVE, + array($this, 'postRowSaveEventRecorder')); } /** @@ -41,8 +59,18 @@ public function testMigrateEvents() { // Run a simple little migration, which should trigger one of each event // other than map_delete. + $config = [ + 'id' => 'sample_data', + 'migration_tags' => ['Event test'], + 'source' => ['plugin' => 'data'], + 'process' => ['value' => 'data'], + 'destination' => ['plugin' => 'dummy'], + 'load' => ['plugin' => 'null'], + ]; + + $migration = Migration::create($config); + /** @var MigrationInterface $migration */ - $migration = entity_load('migration', 'sample_data'); $executable = new MigrateExecutable($migration, new MigrateMessage); $executable->import(); @@ -83,2 +111,97 @@ + /** + * Reacts to map save event. + * + * @param \Drupal\Migrate\Event\MigrateMapSaveEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function mapSaveEventRecorder(MigrateMapSaveEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.map_save_event', array( + 'event_name' => $name, + 'map' => $event->getMap(), + 'fields' => $event->getFields(), + )); + } + + /** + * Reacts to map delete event. + * + * @param \Drupal\Migrate\Event\MigrateMapDeleteEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function mapDeleteEventRecorder(MigrateMapDeleteEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.map_delete_event', array( + 'event_name' => $name, + 'map' => $event->getMap(), + 'source_id' => $event->getSourceId(), + )); + } + + /** + * Reacts to pre-import event. + * + * @param \Drupal\Migrate\Event\MigrateImportEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function preImportEventRecorder(MigrateImportEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.pre_import_event', array( + 'event_name' => $name, + 'migration' => $event->getMigration(), + )); + } + + /** + * Reacts to post-import event. + * + * @param \Drupal\Migrate\Event\MigrateImportEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function postImportEventRecorder(MigrateImportEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.post_import_event', array( + 'event_name' => $name, + 'migration' => $event->getMigration(), + )); + } + + /** + * Reacts to pre-row-save event. + * + * @param \Drupal\Migrate\Event\MigratePreRowSaveEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function preRowSaveEventRecorder(MigratePreRowSaveEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.pre_row_save_event', array( + 'event_name' => $name, + 'migration' => $event->getMigration(), + 'row' => $event->getRow(), + )); + } + + /** + * Reacts to post-row-save event. + * + * @param \Drupal\Migrate\Event\MigratePostRowSaveEvent $event + * The migration event. + * @param string $name + * The event name. + */ + public function postRowSaveEventRecorder(MigratePostRowSaveEvent $event, $name) { + \Drupal::state()->set('migrate_events_test.post_row_save_event', array( + 'event_name' => $name, + 'migration' => $event->getMigration(), + 'row' => $event->getRow(), + 'destination_id_values' => $event->getDestinationIdValues(), + )); + } + } reverted: --- b/core/modules/migrate/tests/modules/migrate_events_test/config/install/migrate.migration.sample_data.yml +++ /dev/null @@ -1,12 +0,0 @@ -id: sample_data -label: Event test - sample data -migration_tags: - - Event test -source: - plugin: data -process: - value: data -destination: - plugin: dummy -load: - plugin: null reverted: --- b/core/modules/migrate/tests/modules/migrate_events_test/migrate_events_test.services.yml +++ /dev/null @@ -1,6 +0,0 @@ -services: - migrate_events_test.event_subscriber: - class: Drupal\migrate_events_test\EventSubscriber - arguments: ['@state'] - tags: - - { name: event_subscriber } reverted: --- b/core/modules/migrate/tests/modules/migrate_events_test/src/EventSubscriber.php +++ /dev/null @@ -1,145 +0,0 @@ -state = $state; - } - - /** - * Reacts to map save event. - * - * @param \Drupal\Migrate\Event\MigrateMapSaveEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function mapSaveEventRecorder(MigrateMapSaveEvent $event, $name) { - $this->state->set('migrate_events_test.map_save_event', array( - 'event_name' => $name, - 'map' => $event->getMap(), - 'fields' => $event->getFields(), - )); - } - - /** - * Reacts to map delete event. - * - * @param \Drupal\Migrate\Event\MigrateMapDeleteEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function mapDeleteEventRecorder(MigrateMapDeleteEvent $event, $name) { - $this->state->set('migrate_events_test.map_delete_event', array( - 'event_name' => $name, - 'map' => $event->getMap(), - 'source_id' => $event->getSourceId(), - )); - } - - /** - * Reacts to pre-import event. - * - * @param \Drupal\Migrate\Event\MigrateImportEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function preImportEventRecorder(MigrateImportEvent $event, $name) { - $this->state->set('migrate_events_test.pre_import_event', array( - 'event_name' => $name, - 'migration' => $event->getMigration(), - )); - } - - /** - * Reacts to post-import event. - * - * @param \Drupal\Migrate\Event\MigrateImportEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function postImportEventRecorder(MigrateImportEvent $event, $name) { - $this->state->set('migrate_events_test.post_import_event', array( - 'event_name' => $name, - 'migration' => $event->getMigration(), - )); - } - - /** - * Reacts to pre-row-save event. - * - * @param \Drupal\Migrate\Event\MigratePreRowSaveEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function preRowSaveEventRecorder(MigratePreRowSaveEvent $event, $name) { - $this->state->set('migrate_events_test.pre_row_save_event', array( - 'event_name' => $name, - 'migration' => $event->getMigration(), - 'row' => $event->getRow(), - )); - } - - /** - * Reacts to post-row-save event. - * - * @param \Drupal\Migrate\Event\MigratePostRowSaveEvent $event - * The migration event. - * @param string $name - * The event name. - */ - public function postRowSaveEventRecorder(MigratePostRowSaveEvent $event, $name) { - $this->state->set('migrate_events_test.post_row_save_event', array( - 'event_name' => $name, - 'migration' => $event->getMigration(), - 'row' => $event->getRow(), - 'destination_id_values' => $event->getDestinationIdValues(), - )); - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() { - $events[MigrateEvents::MAP_SAVE][] = array('mapSaveEventRecorder'); - $events[MigrateEvents::MAP_DELETE][] = array('mapDeleteEventRecorder'); - $events[MigrateEvents::PRE_IMPORT][] = array('preImportEventRecorder'); - $events[MigrateEvents::POST_IMPORT][] = array('postImportEventRecorder'); - $events[MigrateEvents::PRE_ROW_SAVE][] = array('preRowSaveEventRecorder'); - $events[MigrateEvents::POST_ROW_SAVE][] = array('postRowSaveEventRecorder'); - return $events; - } -} diff -u b/core/modules/migrate/tests/src/Unit/TestMigrateExecutable.php b/core/modules/migrate/tests/src/Unit/TestMigrateExecutable.php --- b/core/modules/migrate/tests/src/Unit/TestMigrateExecutable.php +++ b/core/modules/migrate/tests/src/Unit/TestMigrateExecutable.php @@ -40,23 +40,6 @@ protected $clearedMemoryUsage; /** - * Constructs a MigrateExecutable and verifies and sets the memory limit. - * - * @param \Drupal\migrate\Entity\MigrationInterface $migration - * The migration to run. - * @param \Drupal\migrate\MigrateMessageInterface $message - * The message to record. - * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher - * The event dispatcher. - * - * @throws \Drupal\migrate\MigrateException - */ - public function __construct(MigrationInterface $migration, MigrateMessageInterface $message, EventDispatcherInterface $event_dispatcher = NULL) { - parent::__construct($migration, $message); - $this->eventDispatcher = $event_dispatcher; - } - - /** * Sets the string translation service. * * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation only in patch2: unchanged: --- a/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php +++ b/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php @@ -238,8 +238,11 @@ public function testNewHighwater() { * The migrate executable. */ protected function getMigrateExecutable($migration) { + /** @var \Drupal\migrate\MigrateMessageInterface $message */ $message = $this->getMock('Drupal\migrate\MigrateMessageInterface'); - return new MigrateExecutable($migration, $message); + /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */ + $event_dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'); + return new MigrateExecutable($migration, $message, $event_dispatcher); } }