/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var MetadataContext $context */ if ($context->hasResult()) { // config is already set return; } $config = $this->configBag->getMetadata($context->getClassName(), $context->getVersion()); if (!empty($config)) { $context->setResult($config); } }
/** * @param string $entityClass * @param string $version * * @return array|null */ protected function loadConfig($entityClass, $version) { $config = $this->configBag->getRelationConfig($entityClass, $version); if (empty($config) || ConfigUtil::isInherit($config)) { $parentClasses = $this->entityHierarchyProvider->getHierarchyForClassName($entityClass); foreach ($parentClasses as $parentClass) { $parentConfig = $this->configBag->getRelationConfig($parentClass, $version); if (!empty($parentConfig)) { $config = $this->mergeConfigs($parentConfig, $config); if (!ConfigUtil::isInherit($parentConfig)) { break; } } } } return !empty($config) ? $config : null; }
/** * @dataProvider getConfigProvider */ public function testGetRelationConfig($className, $version, $expectedConfig) { $this->assertEquals($expectedConfig, $this->configBag->getRelationConfig($className, $version)); }