Skip to content

Commit

Permalink
Merge fe0675e into 2478554
Browse files Browse the repository at this point in the history
  • Loading branch information
peter-gribanov committed Mar 25, 2020
2 parents 2478554 + fe0675e commit 054ad17
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 27 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ matrix:
dist: trusty
env: SYMFONY_VERSION=3.4.*
- php: 7.1
env: SYMFONY_VERSION=4.2.* PHPUNIT_VERSION=5.7.*
- php: 7.1
env: SYMFONY_VERSION=4.3.* PHPUNIT_VERSION=5.7.*
env: SYMFONY_VERSION=4.4.* PHPUNIT_VERSION=5.7.*
- php: 7.2
env: SYMFONY_VERSION=5.0.* PHPUNIT_VERSION=6.5.*
- php: 5.5
dist: trusty
env: DOCTRINE_VERSION=2.5.*
Expand Down
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
"require": {
"php": ">=5.5.0",
"gpslab/domain-event": "~2.0",
"symfony/http-kernel": "~2.3|~3.0|~4.0",
"symfony/dependency-injection": "~2.3|~3.0|~4.0",
"symfony/expression-language": "~2.3|~3.0|~4.0",
"symfony/http-kernel": "~2.3|~3.0|~4.0|~5.0",
"symfony/dependency-injection": "~2.3|~3.0|~4.0|~5.0",
"symfony/expression-language": "~2.3|~3.0|~4.0|~5.0",
"doctrine/orm": "~2.4|~2.5|~2.6"
},
"require-dev": {
Expand Down
79 changes: 58 additions & 21 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

namespace GpsLab\Bundle\DomainEvent\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

Expand All @@ -28,26 +29,62 @@ class Configuration implements ConfigurationInterface
*/
public function getConfigTreeBuilder()
{
return (new TreeBuilder())
->root('gpslab_domain_event')
->children()
->scalarNode('bus')
->cannotBeEmpty()
->defaultValue('listener_located')
->end()
->scalarNode('queue')
->cannotBeEmpty()
->defaultValue('pull_memory')
->end()
->scalarNode('locator')
->cannotBeEmpty()
->defaultValue('symfony')
->end()
->booleanNode('publish_on_flush')
->defaultValue(false)
->end()
->end()
->end()
;
$tree_builder = $this->createTreeBuilder('gpslab_domain_event');
$root = $this->getRootNode($tree_builder, 'gpslab_domain_event');

$bus = $root->children()->scalarNode('bus');
$bus->cannotBeEmpty()->defaultValue('listener_located');

$queue = $root->children()->scalarNode('queue');
$queue->cannotBeEmpty()->defaultValue('pull_memory');

$locator = $root->children()->scalarNode('locator');
$locator->cannotBeEmpty()->defaultValue('symfony');

$publish_on_flush = $root->children()->booleanNode('publish_on_flush');
$publish_on_flush->defaultValue(false);

return $tree_builder;
}

/**
* @param string $name
*
* @return TreeBuilder
*/
private function createTreeBuilder($name)
{
// Symfony 4.2 +
if (method_exists(TreeBuilder::class, '__construct')) {
return new TreeBuilder($name);
}

// Symfony 4.1 and below
return new TreeBuilder();
}

/**
* @param TreeBuilder $tree_builder
* @param string $name
*
* @return ArrayNodeDefinition
*/
private function getRootNode(TreeBuilder $tree_builder, $name)
{
if (method_exists($tree_builder, 'getRootNode')) {
// Symfony 4.2 +
$root = $tree_builder->getRootNode();
} else {
// Symfony 4.1 and below
$root = $tree_builder->root($name);
}

// @codeCoverageIgnoreStart
if (!($root instanceof ArrayNodeDefinition)) { // should be always false
throw new \RuntimeException(sprintf('The root node should be instance of %s, got %s instead.', ArrayNodeDefinition::class, get_class($root)));
}
// @codeCoverageIgnoreEnd

return $root;
}
}

0 comments on commit 054ad17

Please sign in to comment.