diff -u b/core/core.services.yml b/core/core.services.yml --- b/core/core.services.yml +++ b/core/core.services.yml @@ -763,8 +763,9 @@ arguments: [replica] typed_data_manager: class: Drupal\Core\TypedData\TypedDataManager - arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver', '@service_container'] + arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver'] calls: + - [setContainer, ['@service_container']] - [setValidationConstraintManager, ['@validation.constraint']] tags: - { name: plugin_manager_cache_clear } diff -u b/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php --- b/core/lib/Drupal/Core/TypedData/TypedDataManager.php +++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php @@ -14,23 +14,17 @@ use Drupal\Core\Validation\ConstraintValidatorFactory; use Drupal\Core\Validation\DrupalTranslator; use Symfony\Component\DependencyInjection\ContainerAwareInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ContainerAwareTrait; use Symfony\Component\Validator\Validator\ValidatorInterface; /** * Manages data type plugins. */ -class TypedDataManager extends DefaultPluginManager implements TypedDataManagerInterface { +class TypedDataManager extends DefaultPluginManager implements ContainerAwareInterface, TypedDataManagerInterface { + use ContainerAwareTrait; use DependencySerializationTrait; /** - * The dependency injection container. - * - * @var ContainerInterface - */ - protected $container; - - /** * The validator used for validating typed data. * * @var \Symfony\Component\Validator\Validator\ValidatorInterface @@ -70,14 +64,11 @@ * The module handler. * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver * The class resolver. - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container - * The dependency injection container. */ - public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ClassResolverInterface $class_resolver, ContainerInterface $container) { + public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ClassResolverInterface $class_resolver) { $this->alterInfo('data_type_info'); $this->setCacheBackend($cache_backend, 'typed_data_types_plugins'); $this->classResolver = $class_resolver; - $this->container = $container; parent::__construct('Plugin/DataType', $namespaces, $module_handler, NULL, 'Drupal\Core\TypedData\Annotation\DataType'); } reverted: --- b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php +++ a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php @@ -60,7 +60,6 @@ parent::setUp(); $cache_backend = new NullBackend('cache'); - $namespaces = new \ArrayObject([ 'Drupal\\Core\\TypedData' => $this->root . '/core/lib/Drupal/Core/TypedData', 'Drupal\\Core\\Validation' => $this->root . '/core/lib/Drupal/Core/Validation', @@ -72,12 +71,12 @@ ->disableOriginalConstructor() ->getMock(); + $this->typedDataManager = new TypedDataManager($namespaces, $cache_backend, $module_handler, $class_resolver); - // Typed data definitions access the manager in the container. - $container = new ContainerBuilder(); - $this->typedDataManager = new TypedDataManager($namespaces, $cache_backend, $module_handler, $class_resolver, $container); $this->typedDataManager->setValidationConstraintManager( new ConstraintManager($namespaces, $cache_backend, $module_handler) ); + // Typed data definitions access the manager in the container. + $container = new ContainerBuilder(); $container->set('typed_data_manager', $this->typedDataManager); \Drupal::setContainer($container);