/** * Validate metric type and default metric unit * * @param AbstractAttribute $entity * @param Constraint $constraint */ public function validate($entity, Constraint $constraint) { if ($entity instanceof AbstractAttribute) { $familyProperty = 'metricFamily'; $unitProperty = 'defaultMetricUnit'; } else { if (null === $entity || null !== $entity && !$entity->getData()) { return; } $familyProperty = 'family'; $unitProperty = 'unit'; } $family = $this->propertyAccessor->getValue($entity, $familyProperty); $unit = $this->propertyAccessor->getValue($entity, $unitProperty); if (!array_key_exists($family, $this->measures)) { $this->context->addViolationAt($familyProperty, $constraint->familyMessage); } elseif (!array_key_exists($unit, $this->measures[$family]['units'])) { $this->context->addViolationAt($unitProperty, $constraint->unitMessage); } }