Skip to content
Snippets Groups Projects
Commit 0360c07e authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2022087 by damiankloip: Add module owner to plugin definition in AnnotatedClassDiscovery.

parent b22c7a5b
No related branches found
No related tags found
No related merge requests found
......@@ -62,6 +62,39 @@ function __construct($subdir, \Traversable $root_namespaces, $annotation_namespa
parent::__construct($plugin_namespaces, $annotation_namespaces, $plugin_definition_annotation_name);
}
/**
* {@inheritdoc}
*/
public function getDefinitions() {
$definitions = parent::getDefinitions();
foreach ($definitions as &$definition) {
// Extract the module name from the class namespace if it's not set.
if (!isset($definition['module'])) {
$definition['module'] = $this->getModuleFromNamespace($definition['class']);
}
}
return $definitions;
}
/**
* Extracts a module name from a Drupal namespace.
*
* @param string $namespace
* The namespace to extract the module name from.
*
* @return string|null
* The matches module name, or NULL otherwise.
*/
protected function getModuleFromNamespace($namespace) {
preg_match('|^Drupal\\\\(?<module>[\w]+)\\\\|', $namespace, $matches);
if (isset($matches['module'])) {
return $matches['module'];
}
return NULL;
}
/**
* {@inheritdoc}
*/
......
......@@ -30,6 +30,7 @@ public function setUp() {
'label' => 'Apple',
'color' => 'green',
'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Apple',
'module' => 'plugin_test',
),
'banana' => array(
'id' => 'banana',
......@@ -39,18 +40,21 @@ public function setUp() {
'bread' => t('Banana bread'),
),
'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Banana',
'module' => 'plugin_test',
),
'cherry' => array(
'id' => 'cherry',
'label' => 'Cherry',
'color' => 'red',
'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Cherry',
'module' => 'plugin_test',
),
'orange' => array(
'id' => 'orange',
'label' => 'Orange',
'color' => 'orange',
'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Orange',
'module' => 'plugin_test',
),
);
$namespaces = new \ArrayObject(array('Drupal\plugin_test' => DRUPAL_ROOT . '/core/modules/system/tests/modules/plugin_test/lib'));
......
......@@ -32,11 +32,13 @@ protected function setUp() {
'id' => 'example_1',
'custom' => 'John',
'class' => 'Drupal\plugin_test\Plugin\plugin_test\custom_annotation\Example1',
'module' => 'plugin_test',
),
'example_2' => array(
'id' => 'example_2',
'custom' => 'Paul',
'class' => 'Drupal\plugin_test\Plugin\plugin_test\custom_annotation\Example2',
'module' => 'plugin_test',
),
);
$root_namespaces = new \ArrayObject(array('Drupal\plugin_test' => DRUPAL_ROOT . '/core/modules/system/tests/modules/plugin_test/lib'));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment