Verified Commit 56e9f8a8 authored by Dave Long's avatar Dave Long
Browse files

Issue #2366129 by andypost, stefan.r, smustgrave, vacho:...

Issue #2366129 by andypost, stefan.r, smustgrave, vacho: RegisterStreamWrappersPass and other have broken compiler pass for multiple tags
parent 885932a2
Loading
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -20,11 +20,18 @@ public function process(ContainerBuilder $container) {

    $stream_wrapper_manager = $container->getDefinition('stream_wrapper_manager');

    foreach ($container->findTaggedServiceIds('stream_wrapper') as $id => $attributes) {
    foreach ($container->findTaggedServiceIds('stream_wrapper') as $id => $tags) {
      $class = $container->getDefinition($id)->getClass();
      $scheme = $attributes[0]['scheme'];

      $stream_wrapper_manager->addMethodCall('addStreamWrapper', [$id, $class, $scheme]);
      // Loop through all the tags for this stream wrapper as we may have
      // multiple schemes.
      foreach ($tags as $attributes) {
        $scheme = $attributes['scheme'];
        $stream_wrapper_manager->addMethodCall('addStreamWrapper', [
          $id,
          $class,
          $scheme,
        ]);
      }
    }
  }

+5 −0
Original line number Diff line number Diff line
@@ -15,3 +15,8 @@ services:
    class: Drupal\file_test\StreamWrapper\DummyExternalReadOnlyWrapper
    tags:
      - { name: stream_wrapper, scheme: dummy-external-readonly }
  stream_wrapper.dummy_multiple:
    class: Drupal\file_test\StreamWrapper\DummyMultipleStreamWrapper
    tags:
      - { name: stream_wrapper, scheme: dummy1 }
      - { name: stream_wrapper, scheme: dummy2 }
+10 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\file_test\StreamWrapper;

/**
 * Helper class for testing the stream wrapper registry.
 *
 * Dummy stream wrapper implementation (dummy1://, dummy2://).
 */
class DummyMultipleStreamWrapper extends DummyStreamWrapper {}
+2 −0
Original line number Diff line number Diff line
@@ -324,6 +324,8 @@ public function testModuleStreamWrappers() {
    file_exists('dummy://');
    $stream_wrappers = \Drupal::service('stream_wrapper_manager')->getWrappers();
    $this->assertTrue(isset($stream_wrappers['dummy']));
    $this->assertTrue(isset($stream_wrappers['dummy1']));
    $this->assertTrue(isset($stream_wrappers['dummy2']));
  }

  /**