<?php

namespace Drupal\Core\DefaultContent;

use Drupal\Core\Entity\EntityConstraintViolationListInterface;
use Symfony\Component\Validator\ConstraintViolationInterface;

/**
 * Thrown if an entity being imported has validation errors.
 *
 * @internal
 *   This API is experimental.
 */
final class InvalidEntityException extends \RuntimeException {

  public function __construct(public readonly EntityConstraintViolationListInterface $violations, public readonly string $filePath) {
    $messages = [];

    foreach ($violations as $violation) {
      assert($violation instanceof ConstraintViolationInterface);
      $messages[] = $violation->getPropertyPath() . '=' . $violation->getMessage();
    }
    // Example: "/path/to/file.yml: field_a=Violation 1., field_b=Violation 2.".
    parent::__construct("$filePath: " . implode('||', $messages));
  }

}