diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php
index e85317113a..1f225a3f47 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php
@@ -114,17 +114,6 @@ abstract class Descriptor implements DescriptorInterface
*/
abstract protected function describeRoute(Route $route, array $options = array());
- /**
- * Describes a specific container parameter.
- *
- * @param mixed $parameterValue
- * @param array $options
- */
- protected function describeContainerParameter($parameterValue, array $options = array())
- {
- $this->write($this->formatParameter($parameterValue));
- }
-
/**
* Describes container parameters.
*
@@ -179,6 +168,14 @@ abstract class Descriptor implements DescriptorInterface
*/
abstract protected function describeContainerAlias(Alias $alias, array $options = array());
+ /**
+ * Describes a container parameter.
+ *
+ * @param parameter
+ * @param array $options
+ */
+ abstract protected function describeContainerParameter($parameter, array $options = array());
+
/**
* Formats a value as string.
*
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php
index b5c4908c66..470114d1ef 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/JsonDescriptor.php
@@ -134,6 +134,16 @@ class JsonDescriptor extends Descriptor
$this->writeData($this->getContainerAliasData($alias), $options);
}
+ /**
+ * {@inheritdoc}
+ */
+ protected function describeContainerParameter($parameter, array $options = array())
+ {
+ $key = isset($options['parameter']) ? $options['parameter'] : '';
+
+ $this->writeData(array($key => $this->formatParameter($parameter)), $options);
+ }
+
/**
* Writes data as json.
*
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php
index 23a9a85719..6f4fb76831 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/MarkdownDescriptor.php
@@ -207,6 +207,14 @@ class MarkdownDescriptor extends Descriptor
$this->write(isset($options['id']) ? sprintf("%s\n%s\n\n%s\n", $options['id'], str_repeat('~', strlen($options['id'])), $output) : $output);
}
+ /**
+ * {@inheritdoc}
+ */
+ protected function describeContainerParameter($parameter, array $options = array())
+ {
+ $this->write(isset($options['parameter']) ? sprintf("%s\n%s\n\n%s", $options['parameter'], str_repeat('=', strlen($options['parameter'])), $this->formatParameter($parameter)): $parameter);
+ }
+
private function formatRouterConfig(array $array)
{
if (!count($array)) {
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
index d34d42ef8a..67cb356bc3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
@@ -276,6 +276,14 @@ class TextDescriptor extends Descriptor
$this->writeText(sprintf('This service is an alias for the service %s', (string) $alias), $options);
}
+ /**
+ * {@inheritdoc}
+ */
+ protected function describeContainerParameter($parameter, array $options = array())
+ {
+ $this->writeText($this->formatParameter($parameter), $options);
+ }
+
/**
* @param array $array
*
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php
index b10f2816a0..545bc843db 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/XmlDescriptor.php
@@ -91,6 +91,14 @@ class XmlDescriptor extends Descriptor
$this->writeDocument($this->getContainerAliasDocument($alias, isset($options['id']) ? $options['id'] : null));
}
+ /**
+ * {@inheritdoc}
+ */
+ protected function describeContainerParameter($parameter, array $options = array())
+ {
+ $this->writeDocument($this->getContainerParameterDocument($parameter, $options));
+ }
+
/**
* Writes DOM document.
*
@@ -365,4 +373,24 @@ class XmlDescriptor extends Descriptor
return $dom;
}
+
+ /**
+ * @param $parameter
+ * @param array $options
+ *
+ * @return \DOMDocument
+ */
+ private function getContainerParameterDocument($parameter, $options = array())
+ {
+ $dom = new \DOMDocument('1.0', 'UTF-8');
+ $dom->appendChild($parameterXML = $dom->createElement('parameter'));
+
+ if (isset($options['parameter'])) {
+ $parameterXML->setAttribute('key', $options['parameter']);
+ }
+
+ $parameterXML->appendChild(new \DOMText($this->formatParameter($parameter)));
+
+ return $dom;
+ }
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php
index a8e64e3797..1b4c8d084a 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php
@@ -87,6 +87,21 @@ abstract class AbstractDescriptorTest extends \PHPUnit_Framework_TestCase
return $this->getDescriptionTestData(ObjectsProvider::getContainerAliases());
}
+ /** @dataProvider getDescribeContainerParameterTestData */
+ public function testDescribeContainerParameter($parameter, $expectedDescription, array $options)
+ {
+ $this->assertDescription($expectedDescription, $parameter, $options);
+ }
+
+ public function getDescribeContainerParameterTestData()
+ {
+ $data = $this->getDescriptionTestData(ObjectsProvider::getContainerParameter());
+
+ array_push($data[0], array('parameter' => 'database_name'));
+
+ return $data;
+ }
+
abstract protected function getDescriptor();
abstract protected function getFormat();
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php
index e6a2617a60..1d18431c9e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php
@@ -66,6 +66,16 @@ class ObjectsProvider
);
}
+ public static function getContainerParameter()
+ {
+ $builder = new ContainerBuilder();
+ $builder->setParameter('database_name', 'symfony');
+
+ return array(
+ 'parameter' => $builder
+ );
+ }
+
public static function getContainerBuilders()
{
$builder1 = new ContainerBuilder();
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.json b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.json
new file mode 100644
index 0000000000..069fdbc5d3
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.json
@@ -0,0 +1,3 @@
+{
+ "database_name": "symfony"
+}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.md b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.md
new file mode 100644
index 0000000000..4c67978f68
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.md
@@ -0,0 +1,4 @@
+database_name
+=============
+
+symfony
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.txt
new file mode 100644
index 0000000000..a143508391
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.txt
@@ -0,0 +1 @@
+symfony
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.xml
new file mode 100644
index 0000000000..8465522c1b
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/parameter.xml
@@ -0,0 +1,2 @@
+
+symfony