From a9d248a273bbf59a43e0023f340e901dd5af7d42 Mon Sep 17 00:00:00 2001
From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org>
Date: Tue, 7 Jan 2014 11:34:41 +0000
Subject: [PATCH] Issue #2160495 by damiankloip: Add a
 KeyValueExpirableFactoryInterface.

---
 core/lib/Drupal/Core/Form/FormBuilder.php     |  7 +++--
 .../KeyValueDatabaseExpirableFactory.php      | 22 +++++++++++++---
 .../KeyValueExpirableFactory.php              |  2 +-
 .../KeyValueExpirableFactoryInterface.php     | 26 +++++++++++++++++++
 .../KeyValueNullExpirableFactory.php          |  2 +-
 5 files changed, 50 insertions(+), 9 deletions(-)
 create mode 100644 core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactoryInterface.php

diff --git a/core/lib/Drupal/Core/Form/FormBuilder.php b/core/lib/Drupal/Core/Form/FormBuilder.php
index 355e560be7f5..5a2bed573ab1 100644
--- a/core/lib/Drupal/Core/Form/FormBuilder.php
+++ b/core/lib/Drupal/Core/Form/FormBuilder.php
@@ -14,8 +14,7 @@
 use Drupal\Core\Access\CsrfTokenGenerator;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\HttpKernel;
-use Drupal\Core\KeyValueStore\KeyValueExpirableFactory;
-use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
+use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface;
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\UrlGeneratorInterface;
 use Drupal\Core\StringTranslation\TranslationInterface;
@@ -124,7 +123,7 @@ class FormBuilder implements FormBuilderInterface {
    *
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
    *   The module handler.
-   * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_expirable_factory
+   * @param \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface $key_value_expirable_factory
    *   The keyvalue expirable factory.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   The event dispatcher.
@@ -137,7 +136,7 @@ class FormBuilder implements FormBuilderInterface {
    * @param \Drupal\Core\HttpKernel $http_kernel
    *   The HTTP kernel.
    */
-  public function __construct(ModuleHandlerInterface $module_handler, KeyValueFactoryInterface $key_value_expirable_factory, EventDispatcherInterface $event_dispatcher, UrlGeneratorInterface $url_generator, TranslationInterface $translation_manager, CsrfTokenGenerator $csrf_token = NULL, HttpKernel $http_kernel = NULL) {
+  public function __construct(ModuleHandlerInterface $module_handler, KeyValueExpirableFactoryInterface $key_value_expirable_factory, EventDispatcherInterface $event_dispatcher, UrlGeneratorInterface $url_generator, TranslationInterface $translation_manager, CsrfTokenGenerator $csrf_token = NULL, HttpKernel $http_kernel = NULL) {
     $this->moduleHandler = $module_handler;
     $this->keyValueExpirableFactory = $key_value_expirable_factory;
     $this->eventDispatcher = $event_dispatcher;
diff --git a/core/lib/Drupal/Core/KeyValueStore/KeyValueDatabaseExpirableFactory.php b/core/lib/Drupal/Core/KeyValueStore/KeyValueDatabaseExpirableFactory.php
index b70cd2bd58e9..077676ba5b88 100644
--- a/core/lib/Drupal/Core/KeyValueStore/KeyValueDatabaseExpirableFactory.php
+++ b/core/lib/Drupal/Core/KeyValueStore/KeyValueDatabaseExpirableFactory.php
@@ -9,13 +9,11 @@
 
 use Drupal\Core\DestructableInterface;
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Database\Database;
-use Drupal\Core\KeyValueStore\KeyValueDatabaseFactory;
 
 /**
  * Defines the key/value store factory for the database backend.
  */
-class KeyValueDatabaseExpirableFactory extends KeyValueDatabaseFactory implements DestructableInterface {
+class KeyValueDatabaseExpirableFactory implements KeyValueExpirableFactoryInterface, DestructableInterface {
 
   /**
    * Holds references to each instantiation so they can be terminated.
@@ -24,6 +22,24 @@ class KeyValueDatabaseExpirableFactory extends KeyValueDatabaseFactory implement
    */
   protected $storages;
 
+  /**
+   * The database connection.
+   *
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $connection;
+
+  /**
+   * Constructs this factory object.
+   *
+   *
+   * @param \Drupal\Core\Database\Connection $connection
+   *   The Connection object containing the key-value tables.
+   */
+  function __construct(Connection $connection) {
+    $this->connection = $connection;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactory.php b/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactory.php
index 4a7ca29b468c..b1efbf023394 100644
--- a/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactory.php
+++ b/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactory.php
@@ -12,7 +12,7 @@
 /**
  * Defines the key/value store factory.
  */
-class KeyValueExpirableFactory extends KeyValueFactory {
+class KeyValueExpirableFactory extends KeyValueFactory implements KeyValueExpirableFactoryInterface {
 
   const DEFAULT_SERVICE = 'keyvalue.expirable.database';
 
diff --git a/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactoryInterface.php b/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactoryInterface.php
new file mode 100644
index 000000000000..5bb6247f8a3a
--- /dev/null
+++ b/core/lib/Drupal/Core/KeyValueStore/KeyValueExpirableFactoryInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface.
+ */
+
+namespace Drupal\Core\KeyValueStore;
+
+/**
+ * Defines the expirable key/value store factory interface.
+ */
+interface KeyValueExpirableFactoryInterface {
+
+  /**
+   * Constructs a new expirable key/value store for a given collection name.
+   *
+   * @param string $collection
+   *   The name of the collection holding key and value pairs.
+   *
+   * @return \Drupal\Core\KeyValueStore\KeyValueStoreExpirableInterface
+   *   An expirable key/value store implementation for the given $collection.
+   */
+  public function get($collection);
+
+}
diff --git a/core/lib/Drupal/Core/KeyValueStore/KeyValueNullExpirableFactory.php b/core/lib/Drupal/Core/KeyValueStore/KeyValueNullExpirableFactory.php
index 008dd45054c9..caaf9f4a1f8b 100644
--- a/core/lib/Drupal/Core/KeyValueStore/KeyValueNullExpirableFactory.php
+++ b/core/lib/Drupal/Core/KeyValueStore/KeyValueNullExpirableFactory.php
@@ -10,7 +10,7 @@
 /**
  * Defines the key/value store factory for the null backend.
  */
-class KeyValueNullExpirableFactory implements KeyValueFactoryInterface {
+class KeyValueNullExpirableFactory implements KeyValueExpirableFactoryInterface {
 
   /**
    * {@inheritdoc}
-- 
GitLab