From 705a7d2cc2ca4f8210f8ca11bd73b55efd877a55 Mon Sep 17 00:00:00 2001 From: Javier Spagnoletti Date: Thu, 11 Sep 2014 21:10:53 -0300 Subject: [PATCH] [Embeddables] Improved exception message when embeddables is missing 'class' attribute. --- lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php | 4 ++++ lib/Doctrine/ORM/Mapping/MappingException.php | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php index cf0c6d9cd..2056af6f8 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php @@ -170,6 +170,10 @@ class ClassMetadataFactory extends AbstractClassMetadataFactory continue; } + if (!isset($embeddableClass['class'])) { + throw MappingException::missingEmbeddedClass($property); + } + if (isset($this->embeddablesActiveNesting[$embeddableClass['class']])) { throw MappingException::infiniteEmbeddableNesting($class->name, $property); } diff --git a/lib/Doctrine/ORM/Mapping/MappingException.php b/lib/Doctrine/ORM/Mapping/MappingException.php index 7a8eaada6..9e6b4b33f 100644 --- a/lib/Doctrine/ORM/Mapping/MappingException.php +++ b/lib/Doctrine/ORM/Mapping/MappingException.php @@ -105,6 +105,16 @@ class MappingException extends \Doctrine\ORM\ORMException return new self("The association mapping '$fieldName' misses the 'sourceEntity' attribute."); } + /** + * @param string $fieldName + * + * @return MappingException + */ + public static function missingEmbeddedClass($fieldName) + { + return new self("The embed mapping '$fieldName' misses the 'class' attribute."); + } + /** * @param string $entityName * @param string $fileName