/** * {@inheritdoc} */ public function loadClassMetadata(ClassMetadataInterface $classMetadata, array $normalizationGroups = null, array $denormalizationGroups = null, array $validationGroups = null) { $validatorClassMetadata = $this->validatorMetadataFactory->getMetadataFor($classMetadata->getName()); foreach ($classMetadata->getAttributesMetadata() as $attributeName => $attributeMetadata) { foreach ($validatorClassMetadata->getPropertyMetadata($attributeName) as $propertyMetadata) { if (null === $validationGroups) { foreach ($propertyMetadata->findConstraints($validatorClassMetadata->getDefaultGroup()) as $constraint) { if ($this->isRequired($constraint)) { $attributeMetadata = $attributeMetadata->withRequired(true); break 2; } } } else { foreach ($validationGroups as $validationGroup) { if (!is_string($validationGroup)) { continue; } foreach ($propertyMetadata->findConstraints($validationGroup) as $constraint) { if ($this->isRequired($constraint)) { $attributeMetadata = $attributeMetadata->withRequired(true); break 3; } } } } } $classMetadata = $classMetadata->withAttributeMetadata($attributeName, $attributeMetadata); } return $classMetadata; }
/** * {@inheritdoc} */ public function loadClassMetadata(ClassMetadataInterface $classMetadata, array $normalizationGroups = null, array $denormalizationGroups = null, array $validationGroups = null) { if (null === $normalizationGroups && null === $denormalizationGroups) { return $classMetadata; } $serializerClassMetadata = $this->serializerClassMetadataFactory->getMetadataFor($classMetadata->getName()); foreach ($serializerClassMetadata->getAttributesMetadata() as $serializerAttributeMetadata) { $attributeName = $serializerAttributeMetadata->getName(); $attributeMetadata = $this->attributeMetadataFactory->getAttributeMetadataFor($classMetadata, $attributeName, $normalizationGroups, $denormalizationGroups); list($classMetadata, $attributeMetadata) = $this->populateAttributeMetadata($classMetadata, $attributeName, $attributeMetadata, $serializerAttributeMetadata, $normalizationGroups, $denormalizationGroups); $classMetadata = $this->populateNormalizationLinks($classMetadata, $attributeName, $attributeMetadata, $normalizationGroups, $denormalizationGroups); } return $classMetadata; }