/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ $configOfFilters = $context->getConfigOfFilters(); if (empty($configOfFilters)) { // a filters' configuration does not contains any data return; } if (!ConfigUtil::isExcludeAll($configOfFilters)) { // it seems that filters' configuration was not normalized throw new \RuntimeException(sprintf('Expected "all" exclusion policy for filters. Got: %s.', ConfigUtil::getExclusionPolicy($configOfFilters))); } $fields = ConfigUtil::getArrayValue($configOfFilters, ConfigUtil::FIELDS); $filters = $context->getFilters(); foreach ($fields as $field => $fieldConfig) { if ($filters->has($field)) { continue; } $filter = $this->createFilter(ConfigUtil::getPropertyPath($fieldConfig, $field), $fieldConfig); if (null !== $filter) { $filters->add($field, $filter); } } }