From 58eaf6b03eb244f82a571ebe749c23e5287672ce Mon Sep 17 00:00:00 2001 From: Olivier Dolbeau Date: Mon, 5 Nov 2012 11:00:18 +0100 Subject: [PATCH] Allow multiple servers in configuration --- DependencyInjection/Configuration.php | 37 ++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 69990ab34..cfda3a988 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -45,10 +45,41 @@ private function addClientsSection(ArrayNodeDefinition $rootNode) ->useAttributeAsKey('id') ->prototype('array') ->performNoDeepMerging() + ->beforeNormalization() + ->ifTrue(function($v) { return isset($v['host']) && isset($v['port']); }) + ->then(function($v) { + return array( + 'servers' => array( + 'default' => array( + 'host' => $v['host'], + 'port' => $v['port'], + ) + ) + ); + }) + ->end() + ->beforeNormalization() + ->ifTrue(function($v) { return isset($v['url']); }) + ->then(function($v) { + return array( + 'servers' => array( + 'default' => array( + 'url' => $v['url'], + ) + ) + ); + }) + ->end() ->children() - ->scalarNode('url')->end() - ->scalarNode('host')->end() - ->scalarNode('port')->end() + ->arrayNode('servers') + ->prototype('array') + ->children() + ->scalarNode('url')->end() + ->scalarNode('host')->end() + ->scalarNode('port')->end() + ->end() + ->end() + ->end() ->scalarNode('timeout')->end() ->scalarNode('headers')->end() ->end()