diff --git a/src/Symfony/Component/Workflow/Definition.php b/src/Symfony/Component/Workflow/Definition.php index 9e9e1e796fcce..310cec8f15467 100644 --- a/src/Symfony/Component/Workflow/Definition.php +++ b/src/Symfony/Component/Workflow/Definition.php @@ -30,7 +30,6 @@ final class Definition /** * @param string[] $places * @param Transition[] $transitions - * @param string|null $initialPlace */ public function __construct(array $places, array $transitions, string $initialPlace = null, MetadataStoreInterface $metadataStore = null) { diff --git a/src/Symfony/Component/Workflow/DefinitionBuilder.php b/src/Symfony/Component/Workflow/DefinitionBuilder.php index 94e1e2effe16f..308f950324135 100644 --- a/src/Symfony/Component/Workflow/DefinitionBuilder.php +++ b/src/Symfony/Component/Workflow/DefinitionBuilder.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Workflow; +use Symfony\Component\Workflow\Metadata\MetadataStoreInterface; + /** * Builds a definition. * @@ -23,6 +25,7 @@ class DefinitionBuilder private $places = array(); private $transitions = array(); private $initialPlace; + private $metadataStore; /** * @param string[] $places @@ -39,7 +42,7 @@ public function __construct(array $places = array(), array $transitions = array( */ public function build() { - return new Definition($this->places, $this->transitions, $this->initialPlace); + return new Definition($this->places, $this->transitions, $this->initialPlace, $this->metadataStore); } /** @@ -52,6 +55,7 @@ public function clear() $this->places = array(); $this->transitions = array(); $this->initialPlace = null; + $this->metadataStore = null; return $this; } @@ -122,6 +126,16 @@ public function addTransition(Transition $transition) return $this; } + /** + * @return $this + */ + public function setMetadataStore(MetadataStoreInterface $metadataStore) + { + $this->metadataStore = $metadataStore; + + return $this; + } + /** * @deprecated since Symfony 4.1, use the clear() method instead. * diff --git a/src/Symfony/Component/Workflow/Tests/DefinitionBuilderTest.php b/src/Symfony/Component/Workflow/Tests/DefinitionBuilderTest.php index 1939fb5713963..1af7a326935d6 100644 --- a/src/Symfony/Component/Workflow/Tests/DefinitionBuilderTest.php +++ b/src/Symfony/Component/Workflow/Tests/DefinitionBuilderTest.php @@ -4,6 +4,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Workflow\DefinitionBuilder; +use Symfony\Component\Workflow\Metadata\InMemoryMetadataStore; use Symfony\Component\Workflow\Transition; class DefinitionBuilderTest extends TestCase @@ -44,4 +45,14 @@ public function testAddPlace() $this->assertEquals('a', $definition->getPlaces()['a']); $this->assertEquals('b', $definition->getPlaces()['b']); } + + public function testSetMetadataStore() + { + $builder = new DefinitionBuilder(array('a')); + $metadataStore = new InMemoryMetadataStore(); + $builder->setMetadataStore($metadataStore); + $definition = $builder->build(); + + $this->assertSame($metadataStore, $definition->getMetadataStore()); + } }