* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Workflow\DependencyInjection; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\Workflow\Validator\StateMachineValidator; use Symfony\Component\Workflow\Validator\WorkflowValidator; /** * @author Tobias Nyholm */ class ValidateWorkflowsPass implements CompilerPassInterface { private $definitionTag; public function __construct($definitionTag = 'workflow.definition') { $this->definitionTag = $definitionTag; } public function process(ContainerBuilder $container) { $taggedServices = $container->findTaggedServiceIds($this->definitionTag, true); foreach ($taggedServices as $id => $tags) { foreach ($tags as $tag) { if (!array_key_exists('name', $tag)) { throw new RuntimeException(sprintf('The "name" for the tag "%s" of service "%s" must be set.', $this->definitionTag, $id)); } if (!array_key_exists('type', $tag)) { throw new RuntimeException(sprintf('The "type" for the tag "%s" of service "%s" must be set.', $this->definitionTag, $id)); } if (!array_key_exists('marking_store', $tag)) { throw new RuntimeException(sprintf('The "marking_store" for the tag "%s" of service "%s" must be set.', $this->definitionTag, $id)); } $this->createValidator($tag)->validate($container->get($id), $tag['name']); } } } private function createValidator($tag) { if ('state_machine' === $tag['type']) { return new StateMachineValidator(); } if ('single_state' === $tag['marking_store']) { return new WorkflowValidator(true); } return new WorkflowValidator(); } } __halt_compiler();----SIGNATURE:----AII6jdl16IqFHvwpEhqJ4KyFUi90fnbtFqiCicbRgAut/bFJWXCdnKR3xwLt7popzBiFCq0fVbc8rDqbScgT7wDJbD0K4YWhz6ffuQiafRkdKk+oXF1D6tZy6xa1VlGeW82UqvvxHp6NLAFX3XpwjctyZx1yn4JV8tPjlZkeA7JNVVoc7Z4oTgeYXKV3OZoW0YCBE0WwInkAw1BoT9IQ6y0Z3hIijFOAelRfgla/n6fE7AvcnU9ATAV+AudqIPNuAa6vNZnKwf/7CYyWMl+32yaSSEry2f5fHJSUSm8qcyiZkl8gRBdxRgrjTB9lICG0waNWJhfbvKW6Osp6KIYHQ5wjRT0XdPsS8R/5caKINtJeEZu8gqKBLHM6cvAIkHOXoK+77ZpZ69oET5Z5f2pn4EUzhK7TzQR7ifa0cU8SCeOWcEOSm/Y18ywBPUWwToLXaDgMx4OnvurEXRE6uXi7xf3kSnGS4ks1MJyJw2s9huCe11PYYa+cU5UprKDrvGKdwHn8YpLVIWzE2sIZZtSsPb6/UBFsFAr2ET92X2kmD+k3pvlE4zoJX6heWi08mUhbmH9BpDC19bANuQKF5h/dQvhEt5yMaPeFP5sB4D2PWKvEGL8EbmmAqRiqczpWkSkSEwuTgmgydTgh4vvm7Fp3jOqLz1YtG1e9rNzOUVlSbaA=----ATTACHMENT:----NDg1ODMwODE1MjU1NzM4NiA5NTY1MTQyNzc1NjcyNDYwIDU2NjQxMjI4MzY3OTg0NzQ=