From 12feabd38cd5254031a22f35f94dd43eecd6d655 Mon Sep 17 00:00:00 2001
From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org>
Date: Mon, 8 Sep 2014 14:19:52 +0100
Subject: [PATCH] Issue #2330929 by znerol: Remove the request from parameter
 converters.

---
 core/lib/Drupal/Core/Access/AccessManager.php         |  2 +-
 .../ParamConverter/AdminPathConfigEntityConverter.php |  5 ++---
 .../Drupal/Core/ParamConverter/EntityConverter.php    |  3 +--
 .../Core/ParamConverter/MenuLinkPluginConverter.php   |  3 +--
 .../Core/ParamConverter/ParamConverterInterface.php   |  5 +----
 .../Core/ParamConverter/ParamConverterManager.php     |  6 ++----
 .../ParamConverter/ParamConverterManagerInterface.php |  5 +----
 .../Core/Routing/Enhancer/ParamConversionEnhancer.php |  2 +-
 core/modules/language/src/LanguageConverter.php       |  3 +--
 .../node/src/ParamConverter/NodePreviewConverter.php  |  3 +--
 .../views_ui/src/ParamConverter/ViewUIConverter.php   |  5 ++---
 .../Core/Enhancer/ParamConversionEnhancerTest.php     |  4 ++--
 .../Tests/Core/ParamConverter/EntityConverterTest.php |  7 +++----
 .../Core/ParamConverter/ParamConverterManagerTest.php | 11 +++++------
 14 files changed, 24 insertions(+), 40 deletions(-)

diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php
index 8a8af77c1a28..4f30a2da5b81 100644
--- a/core/lib/Drupal/Core/Access/AccessManager.php
+++ b/core/lib/Drupal/Core/Access/AccessManager.php
@@ -205,7 +205,7 @@ public function checkNamedRoute($route_name, array $parameters = array(), Accoun
         $parameters += $route->getDefaults();
         $route_request->attributes->set('_raw_variables', new ParameterBag($parameters));
         $parameters[RouteObjectInterface::ROUTE_OBJECT] = $route;
-        $route_request->attributes->add($this->paramConverterManager->convert($parameters, $route_request));
+        $route_request->attributes->add($this->paramConverterManager->convert($parameters));
       }
       return $this->check($route, $route_request, $account);
     }
diff --git a/core/lib/Drupal/Core/ParamConverter/AdminPathConfigEntityConverter.php b/core/lib/Drupal/Core/ParamConverter/AdminPathConfigEntityConverter.php
index 45a6c61aa61e..89c59142afd0 100644
--- a/core/lib/Drupal/Core/ParamConverter/AdminPathConfigEntityConverter.php
+++ b/core/lib/Drupal/Core/ParamConverter/AdminPathConfigEntityConverter.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\ParamConverter;
 
 use Drupal\Core\Routing\AdminContext;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
@@ -63,7 +62,7 @@ public function __construct(EntityManagerInterface $entity_manager, ConfigFactor
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
+  public function convert($value, $definition, $name, array $defaults) {
     $entity_type_id = $this->getEntityTypeFromDefaults($definition, $name, $defaults);
 
     // If the entity type is dynamic, confirm it to be a config entity. Static
@@ -71,7 +70,7 @@ public function convert($value, $definition, $name, array $defaults, Request $re
     if (strpos($definition['type'], 'entity:{') === 0) {
       $entity_type = $this->entityManager->getDefinition($entity_type_id);
       if (!$entity_type->isSubclassOf('\Drupal\Core\Config\Entity\ConfigEntityInterface')) {
-        return parent::convert($value, $definition, $name, $defaults, $request);
+        return parent::convert($value, $definition, $name, $defaults);
       }
     }
 
diff --git a/core/lib/Drupal/Core/ParamConverter/EntityConverter.php b/core/lib/Drupal/Core/ParamConverter/EntityConverter.php
index 95ccd0ecd073..683fdff49446 100644
--- a/core/lib/Drupal/Core/ParamConverter/EntityConverter.php
+++ b/core/lib/Drupal/Core/ParamConverter/EntityConverter.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\ParamConverter;
 
 use Drupal\Core\Entity\EntityManagerInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 
 /**
@@ -62,7 +61,7 @@ public function __construct(EntityManagerInterface $entity_manager) {
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
+  public function convert($value, $definition, $name, array $defaults) {
     $entity_type_id = $this->getEntityTypeFromDefaults($definition, $name, $defaults);
     if ($storage = $this->entityManager->getStorage($entity_type_id)) {
       return $storage->load($value);
diff --git a/core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php b/core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php
index b3c2dcffd955..848b05ae258a 100644
--- a/core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php
+++ b/core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Menu\MenuLinkManagerInterface;
 use Drupal\Component\Plugin\Exception\PluginException;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 
 /**
@@ -37,7 +36,7 @@ public function __construct(MenuLinkManagerInterface $menu_link_manager) {
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
+  public function convert($value, $definition, $name, array $defaults) {
     if ($value) {
       try {
         return $this->menuLinkManager->createInstance($value);
diff --git a/core/lib/Drupal/Core/ParamConverter/ParamConverterInterface.php b/core/lib/Drupal/Core/ParamConverter/ParamConverterInterface.php
index 957dfd955cd6..141e32a70157 100644
--- a/core/lib/Drupal/Core/ParamConverter/ParamConverterInterface.php
+++ b/core/lib/Drupal/Core/ParamConverter/ParamConverterInterface.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\ParamConverter;
 
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 
 /**
@@ -26,13 +25,11 @@ interface ParamConverterInterface {
    *   The name of the parameter.
    * @param array $defaults
    *   The route defaults array.
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The request object.
    *
    * @return mixed|null
    *   The converted parameter value.
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request);
+  public function convert($value, $definition, $name, array $defaults);
 
   /**
    * Determines if the converter applies to a specific route and variable.
diff --git a/core/lib/Drupal/Core/ParamConverter/ParamConverterManager.php b/core/lib/Drupal/Core/ParamConverter/ParamConverterManager.php
index cfc8963d2dea..8719cd9a79f9 100644
--- a/core/lib/Drupal/Core/ParamConverter/ParamConverterManager.php
+++ b/core/lib/Drupal/Core/ParamConverter/ParamConverterManager.php
@@ -11,7 +11,6 @@
 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\HttpFoundation\Request;
 
 /**
  * Manages converter services for converting request parameters to full objects.
@@ -81,7 +80,7 @@ public function setRouteParameterConverters(RouteCollection $routes) {
   /**
    * {@inheritdoc}
    */
-  public function convert(array $defaults, Request $request) {
+  public function convert(array $defaults) {
     /** @var $route \Symfony\Component\Routing\Route */
     $route = $defaults[RouteObjectInterface::ROUTE_OBJECT];
 
@@ -104,7 +103,7 @@ public function convert(array $defaults, Request $request) {
 
       // If a converter returns NULL it means that the parameter could not be
       // converted.
-      $defaults[$name] = $this->getConverter($definition['converter'])->convert($defaults[$name], $definition, $name, $defaults, $request);
+      $defaults[$name] = $this->getConverter($definition['converter'])->convert($defaults[$name], $definition, $name, $defaults);
       if (!isset($defaults[$name])) {
         throw new ParamNotConvertedException(sprintf('The "%s" parameter was not converted for the path "%s" (route name: "%s")', $name, $route->getPath(), $defaults[RouteObjectInterface::ROUTE_NAME]));
       }
@@ -114,4 +113,3 @@ public function convert(array $defaults, Request $request) {
   }
 
 }
-
diff --git a/core/lib/Drupal/Core/ParamConverter/ParamConverterManagerInterface.php b/core/lib/Drupal/Core/ParamConverter/ParamConverterManagerInterface.php
index a1761dad70d8..77f69c5eb4c6 100644
--- a/core/lib/Drupal/Core/ParamConverter/ParamConverterManagerInterface.php
+++ b/core/lib/Drupal/Core/ParamConverter/ParamConverterManagerInterface.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\ParamConverter;
 
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\RouteCollection;
 
 /**
@@ -54,8 +53,6 @@ public function setRouteParameterConverters(RouteCollection $routes);
    *
    * @param array $defaults
    *   The route defaults array.
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
    *
    * @throws \Drupal\Core\ParamConverter\ParamNotConvertedException
    *   If one of the assigned converters returned NULL because the given
@@ -64,6 +61,6 @@ public function setRouteParameterConverters(RouteCollection $routes);
    * @return array
    *   The modified defaults.
    */
-  public function convert(array $defaults, Request $request);
+  public function convert(array $defaults);
 
 }
diff --git a/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php b/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php
index 614ac9658e82..6785b95c0772 100644
--- a/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php
+++ b/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php
@@ -45,7 +45,7 @@ public function __construct(ParamConverterManagerInterface $param_converter_mana
    */
   public function enhance(array $defaults, Request $request) {
     $defaults['_raw_variables'] = $this->copyRawVariables($defaults);
-    return $this->paramConverterManager->convert($defaults, $request);
+    return $this->paramConverterManager->convert($defaults);
   }
 
   /**
diff --git a/core/modules/language/src/LanguageConverter.php b/core/modules/language/src/LanguageConverter.php
index 0bcc265ee754..fdfb58a239cb 100644
--- a/core/modules/language/src/LanguageConverter.php
+++ b/core/modules/language/src/LanguageConverter.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\ParamConverter\ParamConverterInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 
 /**
@@ -37,7 +36,7 @@ public function __construct(LanguageManagerInterface $language_manager) {
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
+  public function convert($value, $definition, $name, array $defaults) {
     if (!empty($value)) {
       return $this->languageManager->getLanguage($value);
     }
diff --git a/core/modules/node/src/ParamConverter/NodePreviewConverter.php b/core/modules/node/src/ParamConverter/NodePreviewConverter.php
index adf22ee82368..edba0ff29e65 100644
--- a/core/modules/node/src/ParamConverter/NodePreviewConverter.php
+++ b/core/modules/node/src/ParamConverter/NodePreviewConverter.php
@@ -8,7 +8,6 @@
 namespace Drupal\node\ParamConverter;
 
 use Drupal\Core\Entity\EntityManagerInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 use Drupal\Core\ParamConverter\ParamConverterInterface;
 use Drupal\user\TempStoreFactory;
@@ -38,7 +37,7 @@ public function __construct(TempStoreFactory $temp_store_factory) {
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
+  public function convert($value, $definition, $name, array $defaults) {
     $store = $this->tempStoreFactory->get('node_preview');
     if ($form_state = $store->get($value)) {
       return $form_state->getFormObject()->getEntity();
diff --git a/core/modules/views_ui/src/ParamConverter/ViewUIConverter.php b/core/modules/views_ui/src/ParamConverter/ViewUIConverter.php
index a21cd0e32355..1a6fa993324d 100644
--- a/core/modules/views_ui/src/ParamConverter/ViewUIConverter.php
+++ b/core/modules/views_ui/src/ParamConverter/ViewUIConverter.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\ParamConverter\EntityConverter;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 use Drupal\Core\ParamConverter\ParamConverterInterface;
 use Drupal\user\TempStoreFactory;
@@ -55,8 +54,8 @@ public function __construct(EntityManagerInterface $entity_manager, TempStoreFac
   /**
    * {@inheritdoc}
    */
-  public function convert($value, $definition, $name, array $defaults, Request $request) {
-    if (!$entity = parent::convert($value, $definition, $name, $defaults, $request)) {
+  public function convert($value, $definition, $name, array $defaults) {
+    if (!$entity = parent::convert($value, $definition, $name, $defaults)) {
       return;
     }
 
diff --git a/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php b/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
index bfc089ea8d3f..e077f9c58ad5 100644
--- a/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
+++ b/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
@@ -61,7 +61,7 @@ public function testEnhance() {
 
     $this->paramConverterManager->expects($this->any())
       ->method('convert')
-      ->with($this->isType('array'), $this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
+      ->with($this->isType('array'))
       ->will($this->returnValue($expected));
 
     $result = $this->paramConversionEnhancer->enhance($defaults, new Request());
@@ -82,7 +82,7 @@ public function testCopyRawVariables() {
     $defaults['bar'] = &$defaults['id'];
     $this->paramConverterManager->expects($this->any())
       ->method('convert')
-      ->with($this->isType('array'), $this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
+      ->with($this->isType('array'))
       ->will($this->returnCallback(function ($defaults) {
         // Convert the mirrored default to another value.
         $defaults['bar'] = '2';
diff --git a/core/tests/Drupal/Tests/Core/ParamConverter/EntityConverterTest.php b/core/tests/Drupal/Tests/Core/ParamConverter/EntityConverterTest.php
index baeb0c48e705..36919a694943 100644
--- a/core/tests/Drupal/Tests/Core/ParamConverter/EntityConverterTest.php
+++ b/core/tests/Drupal/Tests/Core/ParamConverter/EntityConverterTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\ParamConverter\EntityConverter;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 
 /**
@@ -95,7 +94,7 @@ public function testConvert($value, array $definition, array $defaults, $expecte
         ['invalid_id', NULL],
       ]);
 
-    $this->assertEquals($expected_result, $this->entityConverter->convert($value, $definition, 'foo', $defaults, new Request()));
+    $this->assertEquals($expected_result, $this->entityConverter->convert($value, $definition, 'foo', $defaults));
   }
 
   /**
@@ -124,7 +123,7 @@ public function testConvertWithInvalidEntityType() {
       ->with('invalid_id')
       ->willThrowException(new \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException('invalid_id'));
 
-    $this->entityConverter->convert('id', ['type' => 'entity:invalid_id'], 'foo', ['foo' => 'id'], new Request());
+    $this->entityConverter->convert('id', ['type' => 'entity:invalid_id'], 'foo', ['foo' => 'id']);
   }
 
   /**
@@ -134,7 +133,7 @@ public function testConvertWithInvalidEntityType() {
    * @expectedExceptionMessage The "foo" parameter was not converted because the "invalid_id" parameter is missing
    */
   public function testConvertWithInvalidDynamicEntityType() {
-    $this->entityConverter->convert('id', ['type' => 'entity:{invalid_id}'], 'foo', ['foo' => 'id'], new Request());
+    $this->entityConverter->convert('id', ['type' => 'entity:{invalid_id}'], 'foo', ['foo' => 'id']);
   }
 
 }
diff --git a/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php b/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
index 5a89e894af7a..3519ec75f14e 100644
--- a/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
@@ -10,7 +10,6 @@
 use Drupal\Core\ParamConverter\ParamConverterManager;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
 
@@ -199,11 +198,11 @@ public function testConvert() {
     $converter = $this->getMock('Drupal\Core\ParamConverter\ParamConverterInterface');
     $converter->expects($this->any())
       ->method('convert')
-      ->with(1, $this->isType('array'), 'id', $this->isType('array'), $this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
+      ->with(1, $this->isType('array'), 'id', $this->isType('array'))
       ->will($this->returnValue('something_better!'));
     $this->manager->addConverter($converter, 'test_convert');
 
-    $result = $this->manager->convert($defaults, new Request());
+    $result = $this->manager->convert($defaults);
 
     $this->assertEquals($expected, $result);
   }
@@ -220,7 +219,7 @@ public function testConvertNoConverting() {
 
     $expected = $defaults;
 
-    $result = $this->manager->convert($defaults, new Request());
+    $result = $this->manager->convert($defaults);
     $this->assertEquals($expected, $result);
   }
 
@@ -248,11 +247,11 @@ public function testConvertMissingParam() {
     $converter = $this->getMock('Drupal\Core\ParamConverter\ParamConverterInterface');
     $converter->expects($this->any())
       ->method('convert')
-      ->with(1, $this->isType('array'), 'id', $this->isType('array'), $this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
+      ->with(1, $this->isType('array'), 'id', $this->isType('array'))
       ->will($this->returnValue(NULL));
     $this->manager->addConverter($converter, 'test_convert');
 
-    $this->manager->convert($defaults, new Request());
+    $this->manager->convert($defaults);
   }
 
 }
-- 
GitLab