AnnotatedClassDiscovery.php

Namespace

Drupal\rules\Context

File

src/Context/AnnotatedClassDiscovery.php

View source
<?php

namespace Drupal\rules\Context;

use Drupal\Component\Annotation\Doctrine\SimpleAnnotationReader;
use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery as CoreAnnotatedClassDiscovery;

/**
 * Extends the annotation class discovery for usage with Rules context.
 *
 * We modify the annotations classes for ContextDefinition and for Condition.
 * This class makes sure that our plugin managers apply these.
 */
class AnnotatedClassDiscovery extends CoreAnnotatedClassDiscovery {
    
    /**
     * {@inheritdoc}
     */
    protected function getAnnotationReader() {
        if (!isset($this->annotationReader)) {
            // Do not call out the parent, but re-configure the simple annotation
            // reader on our own, so we can control the order of namespaces.
            $this->annotationReader = new SimpleAnnotationReader();
            // Make sure to add our namespace first, so our ContextDefinition and
            // Condition annotations gets picked.
            $this->annotationReader
                ->addNamespace('Drupal\\rules\\Context\\Annotation');
            $this->annotationReader
                ->addNamespace('Drupal\\rules\\Core\\Annotation');
            // Add the namespaces from the main plugin annotation, like @EntityType.
            $namespace = substr($this->pluginDefinitionAnnotationName, 0, strrpos($this->pluginDefinitionAnnotationName, '\\'));
            $this->annotationReader
                ->addNamespace($namespace);
            // Add general core annotations like @Translation.
            $this->annotationReader
                ->addNamespace('Drupal\\Core\\Annotation');
        }
        return $this->annotationReader;
    }

}

Classes

Title Deprecated Summary
AnnotatedClassDiscovery Extends the annotation class discovery for usage with Rules context.