diff --git a/core/lib/Drupal/Core/Queue/QueueDatabaseFactory.php b/core/lib/Drupal/Core/Queue/QueueDatabaseFactory.php index c4e5b3ba1337..45d32f09efb8 100644 --- a/core/lib/Drupal/Core/Queue/QueueDatabaseFactory.php +++ b/core/lib/Drupal/Core/Queue/QueueDatabaseFactory.php @@ -5,9 +5,9 @@ namespace Drupal\Core\Queue; use Drupal\Core\Database\Connection; /** - * Defines the key/value store factory for the database backend. + * Defines the queue factory for the database backend. */ -class QueueDatabaseFactory { +class QueueDatabaseFactory implements QueueFactoryInterface { /** * The database connection. @@ -20,20 +20,14 @@ class QueueDatabaseFactory { * Constructs this factory object. * * @param \Drupal\Core\Database\Connection $connection - * The Connection object containing the key-value tables. + * The Connection object containing the queue table. */ public function __construct(Connection $connection) { $this->connection = $connection; } /** - * Constructs a new queue object for a given name. - * - * @param string $name - * The name of the collection holding key and value pairs. - * - * @return \Drupal\Core\Queue\DatabaseQueue - * A key/value store implementation for the given $collection. + * {@inheritdoc} */ public function get($name) { return new DatabaseQueue($name, $this->connection); diff --git a/core/lib/Drupal/Core/Queue/QueueFactory.php b/core/lib/Drupal/Core/Queue/QueueFactory.php index cfb072538adf..0fb33da2a20a 100644 --- a/core/lib/Drupal/Core/Queue/QueueFactory.php +++ b/core/lib/Drupal/Core/Queue/QueueFactory.php @@ -58,7 +58,11 @@ class QueueFactory implements ContainerAwareInterface { if (empty($service_name)) { $service_name = $this->settings->get('queue_service_' . $name, $this->settings->get('queue_default', 'queue.database')); } - $this->queues[$name] = $this->container->get($service_name)->get($name); + $factory = $this->container->get($service_name); + if (!$factory instanceof QueueFactoryInterface) { + @trigger_error(sprintf('Not implementing %s in %s is deprecated in drupal:10.3.0 and the factory will not be discovered in drupal:11.0.0. Implement the interface in your factory class. See https://www.drupal.org/node/3417034', QueueFactoryInterface::class, $factory::class), E_USER_DEPRECATED); + } + $this->queues[$name] = $factory->get($name); } return $this->queues[$name]; } diff --git a/core/lib/Drupal/Core/Queue/QueueFactoryInterface.php b/core/lib/Drupal/Core/Queue/QueueFactoryInterface.php new file mode 100644 index 000000000000..580d958ee879 --- /dev/null +++ b/core/lib/Drupal/Core/Queue/QueueFactoryInterface.php @@ -0,0 +1,21 @@ +