From 4d6cef1ff6fb6fe06dfbedbce45f2afc0eb14695 Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Fri, 17 May 2013 11:42:11 -0300 Subject: [PATCH 1/2] [DDC-2451] Fix entity listeners serialization --- lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php | 4 ++++ .../Tests/ORM/Mapping/ClassMetadataTest.php | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php index 1e038d659..1f0d4653f 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php @@ -831,6 +831,10 @@ class ClassMetadataInfo implements ClassMetadata $serialized[] = 'lifecycleCallbacks'; } + if ($this->entityListeners) { + $serialized[] = 'entityListeners'; + } + if ($this->namedQueries) { $serialized[] = 'namedQueries'; } diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php index b8e0becc4..4904b43f8 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php @@ -714,6 +714,23 @@ class ClassMetadataTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals(1, count($cm->getNamedNativeQueries())); } + /** + * @group DDC-2451 + */ + public function testSerializeEntityListeners() + { + $metadata = new ClassMetadata('Doctrine\Tests\Models\Company\CompanyContract'); + + $metadata->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService); + $metadata->addEntityListener(\Doctrine\ORM\Events::prePersist, 'CompanyContractListener', 'prePersistHandler'); + $metadata->addEntityListener(\Doctrine\ORM\Events::postPersist, 'CompanyContractListener', 'postPersistHandler'); + + $serialize = serialize($metadata); + $unserialize = unserialize($serialize); + + $this->assertEquals($unserialize->entityListeners, $metadata->entityListeners); + } + /** * @expectedException \Doctrine\ORM\Mapping\MappingException * @expectedExceptionMessage Query named "userById" in "Doctrine\Tests\Models\CMS\CmsUser" was already declared, but it must be declared only once From 1d7c72cc06a6fadc3c1d8e59c66ca4b9d679a7fe Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Fri, 17 May 2013 11:55:36 -0300 Subject: [PATCH 2/2] [DDC-2451] Fix test assert --- tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php index 4904b43f8..330b54a3f 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php @@ -728,7 +728,7 @@ class ClassMetadataTest extends \Doctrine\Tests\OrmTestCase $serialize = serialize($metadata); $unserialize = unserialize($serialize); - $this->assertEquals($unserialize->entityListeners, $metadata->entityListeners); + $this->assertEquals($metadata->entityListeners, $unserialize->entityListeners); } /**