From b07393ece8b4854c1a12e0e73880333f9ced522d Mon Sep 17 00:00:00 2001 From: Guilherme Blanco Date: Mon, 19 Aug 2019 00:54:01 -0400 Subject: [PATCH] Cleanup after AssociationBuilders and prep for ClassMetadataBuilder --- .../Mapping/Builder/ClassMetadataBuilder.php | 82 +++++++++++ lib/Doctrine/ORM/Mapping/ClassMetadata.php | 29 +--- .../ORM/Mapping/ClassMetadataFactory.php | 6 + .../ORM/Mapping/ComponentMetadata.php | 34 +++-- .../ORM/Mapping/Driver/AnnotationDriver.php | 57 +------- .../ORM/Mapping/Driver/DatabaseDriver.php | 2 +- .../Mapping/Driver/NewAnnotationDriver.php | 4 +- lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php | 2 +- .../ORM/Mapping/EmbeddedClassMetadata.php | 4 +- .../ORM/Mapping/EntityClassMetadata.php | 4 +- .../Tests/ORM/CommitOrderCalculatorTest.php | 36 ++--- .../Tests/ORM/Functional/SQLFilterTest.php | 14 +- .../ORM/Functional/Ticket/DDC3103Test.php | 2 +- .../ORM/Mapping/ClassMetadataFactoryTest.php | 11 +- .../Tests/ORM/Mapping/ClassMetadataTest.php | 127 +++++++----------- .../Tests/ORM/Proxy/ProxyFactoryTest.php | 12 +- .../DefaultRepositoryFactoryTest.php | 20 +-- tests/Doctrine/Tests/ORM/UnitOfWorkTest.php | 16 +-- .../HierarchyDiscriminatorResolverTest.php | 21 +-- 19 files changed, 201 insertions(+), 282 deletions(-) create mode 100644 lib/Doctrine/ORM/Mapping/Builder/ClassMetadataBuilder.php diff --git a/lib/Doctrine/ORM/Mapping/Builder/ClassMetadataBuilder.php b/lib/Doctrine/ORM/Mapping/Builder/ClassMetadataBuilder.php new file mode 100644 index 00000000000..816a7137253 --- /dev/null +++ b/lib/Doctrine/ORM/Mapping/Builder/ClassMetadataBuilder.php @@ -0,0 +1,82 @@ +metadataBuildingContext = $metadataBuildingContext; + $this->cacheMetadataBuilder = $cacheMetadataBuilder ?: new CacheMetadataBuilder($metadataBuildingContext); + } + + public function getClassName(string $className) : ClassMetadataBuilder + { + $this->className = $className; + + return $this; + } + + public function withParentMetadata(Mapping\ComponentMetadata $parentMetadata) : ClassMetadataBuilder + { + $this->parentMetadata = $parentMetadata; + + return $this; + } + + public function withCacheAnnotation(?Annotation\Cache $cacheAnnotation) : ClassMetadataBuilder + { + $this->cacheAnnotation = $cacheAnnotation; + + if ($cacheAnnotation !== null) { + $this->cacheMetadataBuilder->withCacheAnnotation($cacheAnnotation); + } + + return $this; + } + + public function build() : Mapping\ClassMetadata + { + assert($this->className !== null); + + $reflectionService = $this->metadataBuildingContext->getReflectionService(); + $reflectionClass = $reflectionService->getClass($this->className); + $className = $reflectionClass ? $reflectionClass->getName() : $this->className; + + $classMetadata = new Mapping\ClassMetadata($className, $this->parentMetadata); + + $this->buildCache($classMetadata); + + return $classMetadata; + } + + protected function buildCache(Mapping\ClassMetadata $classMetadata) : void + { + if ($this->cacheAnnotation !== null) { + $classMetadata->setCache($this->cacheMetadataBuilder->build()); + } + } +} diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadata.php b/lib/Doctrine/ORM/Mapping/ClassMetadata.php index db114f2255c..2c26df9cb5f 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadata.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadata.php @@ -179,12 +179,9 @@ class ClassMetadata extends ComponentMetadata implements TableOwner * @param string $entityName The name of the entity class. * @param ClassMetadata|null $parent Optional parent class metadata. */ - public function __construct( - string $entityName, - ?ComponentMetadata $parent, - ClassMetadataBuildingContext $metadataBuildingContext - ) { - parent::__construct($entityName, $metadataBuildingContext); + public function __construct(string $entityName, ?ComponentMetadata $parent) + { + parent::__construct($entityName); if ($parent) { $this->setParent($parent); @@ -373,26 +370,6 @@ public function __sleep() return $serialized; } - /** - * Restores some state that can not be serialized/unserialized. - */ - public function wakeupReflection(ReflectionService $reflectionService) : void - { - // Restore ReflectionClass and properties - $this->reflectionClass = $reflectionService->getClass($this->className); - - if (! $this->reflectionClass) { - return; - } - - $this->className = $this->reflectionClass->getName(); - - foreach ($this->properties as $property) { - /** @var Property $property */ - $property->wakeupReflection($reflectionService); - } - } - /** * Sets the change tracking policy used by this class. */ diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php index 4dcbc5decb1..da9aa830da1 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php @@ -390,6 +390,10 @@ protected function doLoadMetadata( ?ClassMetadata $parent, ClassMetadataBuildingContext $metadataBuildingContext ) : ?ComponentMetadata { + $reflectionService = $metadataBuildingContext->getReflectionService(); + $reflectionClass = $reflectionService->getClass($className); + $className = $reflectionClass ? $reflectionClass->getName() : $className; + /** @var ClassMetadata $classMetadata */ $classMetadata = $this->driver->loadMetadataForClass($className, $parent, $metadataBuildingContext); @@ -399,6 +403,8 @@ protected function doLoadMetadata( $this->evm->dispatchEvent(Events::loadClassMetadata, $eventArgs); } + $classMetadata->wakeupReflection($metadataBuildingContext->getReflectionService()); + $this->buildValueGenerationPlan($classMetadata); $this->validateRuntimeMetadata($classMetadata, $parent); diff --git a/lib/Doctrine/ORM/Mapping/ComponentMetadata.php b/lib/Doctrine/ORM/Mapping/ComponentMetadata.php index 60bbc691278..5a5d967870c 100644 --- a/lib/Doctrine/ORM/Mapping/ComponentMetadata.php +++ b/lib/Doctrine/ORM/Mapping/ComponentMetadata.php @@ -5,9 +5,9 @@ namespace Doctrine\ORM\Mapping; use ArrayIterator; +use Doctrine\ORM\Reflection\ReflectionService; use ReflectionClass; use ReflectionException; -use ReflectionProperty; /** * A ComponentMetadata instance holds object-relational property mapping. @@ -33,12 +33,9 @@ abstract class ComponentMetadata /** @var Property[] */ protected $properties = []; - public function __construct(string $className, ClassMetadataBuildingContext $metadataBuildingContext) + public function __construct(string $className) { - $reflectionService = $metadataBuildingContext->getReflectionService(); - - $this->reflectionClass = $reflectionService->getClass($className); - $this->className = $this->reflectionClass ? $this->reflectionClass->getName() : $className; + $this->className = $className; } public function getClassName() : string @@ -56,6 +53,23 @@ public function getParent() : ?ComponentMetadata return $this->parent; } + public function wakeupReflection(ReflectionService $reflectionService) : void + { + // Restore ReflectionClass and properties + $this->reflectionClass = $reflectionService->getClass($this->className); + + if (! $this->reflectionClass) { + return; + } + + $this->className = $this->reflectionClass->getName(); + + foreach ($this->properties as $property) { + /** @var Property $property */ + $property->wakeupReflection($reflectionService); + } + } + public function getReflectionClass() : ?ReflectionClass { return $this->reflectionClass; @@ -96,14 +110,6 @@ public function addProperty(Property $property) : void $property->setDeclaringClass($this); - if ($this->reflectionClass) { - $reflectionProperty = new ReflectionProperty($className, $propertyName); - - $reflectionProperty->setAccessible(true); - - $property->setReflectionProperty($reflectionProperty); - } - $this->properties[$propertyName] = $property; } diff --git a/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php b/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php index 3c75c71baca..79e1155b25a 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php +++ b/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php @@ -22,15 +22,10 @@ use RegexIterator; use RuntimeException; use UnexpectedValueException; -use function array_diff; -use function array_intersect; -use function array_map; use function array_merge; use function array_unique; use function class_exists; use function constant; -use function count; -use function defined; use function get_class; use function get_declared_classes; use function in_array; @@ -284,7 +279,7 @@ public function loadMetadataForClass( Mapping\ClassMetadataBuildingContext $metadataBuildingContext ) : Mapping\ComponentMetadata { $reflectionClass = new ReflectionClass($className); - $metadata = new Mapping\ClassMetadata($className, $parent, $metadataBuildingContext); + $metadata = new Mapping\ClassMetadata($className, $parent); $classAnnotations = $this->getClassAnnotations($reflectionClass); $classMetadata = $this->convertClassAnnotationsToClassMetadata( $classAnnotations, @@ -840,56 +835,6 @@ private function attachPropertyOverrides( } } - /** - * Attempts to resolve the cascade modes. - * - * @param string $className The class name. - * @param string $fieldName The field name. - * @param string[] $originalCascades The original unprocessed field cascades. - * - * @return string[] The processed field cascades. - * - * @throws Mapping\MappingException If a cascade option is not valid. - */ - private function getCascade(string $className, string $fieldName, array $originalCascades) : array - { - $cascadeTypes = ['remove', 'persist', 'refresh']; - $cascades = array_map('strtolower', $originalCascades); - - if (in_array('all', $cascades, true)) { - $cascades = $cascadeTypes; - } - - if (count($cascades) !== count(array_intersect($cascades, $cascadeTypes))) { - $diffCascades = array_diff($cascades, array_intersect($cascades, $cascadeTypes)); - - throw Mapping\MappingException::invalidCascadeOption($diffCascades, $className, $fieldName); - } - - return $cascades; - } - - /** - * Attempts to resolve the fetch mode. - * - * @param string $className The class name. - * @param string $fetchMode The fetch mode. - * - * @return string The fetch mode as defined in ClassMetadata. - * - * @throws Mapping\MappingException If the fetch mode is not valid. - */ - private function getFetchMode($className, $fetchMode) : string - { - $fetchModeConstant = sprintf('%s::%s', Mapping\FetchMode::class, $fetchMode); - - if (! defined($fetchModeConstant)) { - throw Mapping\MappingException::invalidFetchMode($className, $fetchMode); - } - - return constant($fetchModeConstant); - } - /** * @return Annotation\Annotation[] */ diff --git a/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php b/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php index 936f0764270..96d1ecb74f0 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php +++ b/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php @@ -149,7 +149,7 @@ public function loadMetadataForClass( throw new InvalidArgumentException('Unknown class ' . $className); } - $metadata = new Mapping\ClassMetadata($className, $parent, $metadataBuildingContext); + $metadata = new Mapping\ClassMetadata($className, $parent); $this->buildTable($metadata); $this->buildFieldMappings($metadata); diff --git a/lib/Doctrine/ORM/Mapping/Driver/NewAnnotationDriver.php b/lib/Doctrine/ORM/Mapping/Driver/NewAnnotationDriver.php index 1465616a679..b698e307058 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/NewAnnotationDriver.php +++ b/lib/Doctrine/ORM/Mapping/Driver/NewAnnotationDriver.php @@ -230,7 +230,7 @@ private function convertClassAnnotationsToEntityClassMetadata( ) { /** @var Annotation\Entity $entityAnnot */ $entityAnnot = $classAnnotations[Annotation\Entity::class]; - $classMetadata = new Mapping\ClassMetadata($reflectionClass->getName(), $parent, $metadataBuildingContext); + $classMetadata = new Mapping\ClassMetadata($reflectionClass->getName(), $parent); if ($entityAnnot->repositoryClass !== null) { $classMetadata->setCustomRepositoryClassName($entityAnnot->repositoryClass); @@ -387,7 +387,7 @@ private function convertClassAnnotationsToMappedSuperClassMetadata( ) { /** @var Annotation\MappedSuperclass $mappedSuperclassAnnot */ $mappedSuperclassAnnot = $classAnnotations[Annotation\MappedSuperclass::class]; - $classMetadata = new Mapping\MappedSuperClassMetadata($reflectionClass->getName(), $parent); + $classMetadata = new Mapping\MappedSuperClassMetadata($reflectionClass->getName()); if ($mappedSuperclassAnnot->repositoryClass !== null) { $classMetadata->setCustomRepositoryClassName($mappedSuperclassAnnot->repositoryClass); diff --git a/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php b/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php index e22c659d615..35ef7ed4d87 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php +++ b/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php @@ -47,7 +47,7 @@ public function loadMetadataForClass( ?Mapping\ComponentMetadata $parent, Mapping\ClassMetadataBuildingContext $metadataBuildingContext ) : Mapping\ComponentMetadata { - $metadata = new Mapping\ClassMetadata($className, $parent, $metadataBuildingContext); + $metadata = new Mapping\ClassMetadata($className, $parent); /** @var SimpleXMLElement $xmlRoot */ $xmlRoot = $this->getElement($className); diff --git a/lib/Doctrine/ORM/Mapping/EmbeddedClassMetadata.php b/lib/Doctrine/ORM/Mapping/EmbeddedClassMetadata.php index b7f22fb751b..85ab820dea5 100644 --- a/lib/Doctrine/ORM/Mapping/EmbeddedClassMetadata.php +++ b/lib/Doctrine/ORM/Mapping/EmbeddedClassMetadata.php @@ -26,9 +26,9 @@ class EmbeddedClassMetadata extends ComponentMetadata implements Property /** @var bool */ protected $primaryKey = false; - public function __construct(string $name, string $className, ?MappedSuperClassMetadata $parent = null) + public function __construct(string $name, string $className/*, ?MappedSuperClassMetadata $parent = null*/) { - parent::__construct($className, $parent); + parent::__construct($className); $this->name = $name; } diff --git a/lib/Doctrine/ORM/Mapping/EntityClassMetadata.php b/lib/Doctrine/ORM/Mapping/EntityClassMetadata.php index e1cf012be79..055b030285d 100644 --- a/lib/Doctrine/ORM/Mapping/EntityClassMetadata.php +++ b/lib/Doctrine/ORM/Mapping/EntityClassMetadata.php @@ -67,9 +67,9 @@ abstract class EntityClassMetadata extends ComponentMetadata */ protected $table; - public function __construct(string $className, ClassMetadataBuildingContext $metadataBuildingContext) + public function __construct(string $className) { - parent::__construct($className, $metadataBuildingContext); + parent::__construct($className); $this->entityName = $className; } diff --git a/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php b/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php index 806e3a75235..fc5fb42f226 100644 --- a/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php +++ b/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php @@ -4,12 +4,8 @@ namespace Doctrine\Tests\ORM; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\ORM\Internal\CommitOrderCalculator; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\ORM\Mapping\ClassMetadataBuildingContext; -use Doctrine\ORM\Mapping\ClassMetadataFactory; -use Doctrine\ORM\Reflection\ReflectionService; use Doctrine\Tests\OrmTestCase; /** @@ -24,26 +20,18 @@ class CommitOrderCalculatorTest extends OrmTestCase /** @var CommitOrderCalculator */ private $calc; - /** @var ClassMetadataBuildingContext|PHPUnit_Framework_MockObject_MockObject */ - private $metadataBuildingContext; - protected function setUp() : void { - $this->calc = new CommitOrderCalculator(); - $this->metadataBuildingContext = new ClassMetadataBuildingContext( - $this->createMock(ClassMetadataFactory::class), - $this->createMock(ReflectionService::class), - $this->createMock(AbstractPlatform::class) - ); + $this->calc = new CommitOrderCalculator(); } public function testCommitOrdering1() : void { - $class1 = new ClassMetadata(NodeClass1::class, null, $this->metadataBuildingContext); - $class2 = new ClassMetadata(NodeClass2::class, null, $this->metadataBuildingContext); - $class3 = new ClassMetadata(NodeClass3::class, null, $this->metadataBuildingContext); - $class4 = new ClassMetadata(NodeClass4::class, null, $this->metadataBuildingContext); - $class5 = new ClassMetadata(NodeClass5::class, null, $this->metadataBuildingContext); + $class1 = new ClassMetadata(NodeClass1::class, null); + $class2 = new ClassMetadata(NodeClass2::class, null); + $class3 = new ClassMetadata(NodeClass3::class, null); + $class4 = new ClassMetadata(NodeClass4::class, null); + $class5 = new ClassMetadata(NodeClass5::class, null); $this->calc->addNode($class1->getClassName(), $class1); $this->calc->addNode($class2->getClassName(), $class2); @@ -66,8 +54,8 @@ public function testCommitOrdering1() : void public function testCommitOrdering2() : void { - $class1 = new ClassMetadata(NodeClass1::class, null, $this->metadataBuildingContext); - $class2 = new ClassMetadata(NodeClass2::class, null, $this->metadataBuildingContext); + $class1 = new ClassMetadata(NodeClass1::class, null); + $class2 = new ClassMetadata(NodeClass2::class, null); $this->calc->addNode($class1->getClassName(), $class1); $this->calc->addNode($class2->getClassName(), $class2); @@ -86,10 +74,10 @@ public function testCommitOrdering2() : void public function testCommitOrdering3() { // this test corresponds to the GH7259Test::testPersistFileBeforeVersion functional test - $class1 = new ClassMetadata(NodeClass1::class, null, $this->metadataBuildingContext); - $class2 = new ClassMetadata(NodeClass2::class, null, $this->metadataBuildingContext); - $class3 = new ClassMetadata(NodeClass3::class, null, $this->metadataBuildingContext); - $class4 = new ClassMetadata(NodeClass4::class, null, $this->metadataBuildingContext); + $class1 = new ClassMetadata(NodeClass1::class, null); + $class2 = new ClassMetadata(NodeClass2::class, null); + $class3 = new ClassMetadata(NodeClass3::class, null); + $class4 = new ClassMetadata(NodeClass4::class, null); $this->calc->addNode($class1->getClassName(), $class1); $this->calc->addNode($class2->getClassName(), $class2); diff --git a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php index 0ff962a3f79..4b4ce2f6995 100644 --- a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php @@ -6,17 +6,13 @@ use Doctrine\Common\Cache\ArrayCache; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\Type as DBALType; use Doctrine\ORM\Configuration; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\ORM\Mapping\ClassMetadataBuildingContext; -use Doctrine\ORM\Mapping\ClassMetadataFactory; use Doctrine\ORM\Mapping\FetchMode; use Doctrine\ORM\Query\Filter\SQLFilter; use Doctrine\ORM\Query\FilterCollection; -use Doctrine\ORM\Reflection\ReflectionService; use Doctrine\Tests\Models\CMS\CmsAddress; use Doctrine\Tests\Models\CMS\CmsArticle; use Doctrine\Tests\Models\CMS\CmsGroup; @@ -308,21 +304,15 @@ public function testSQLFilterSetParameterInfersType() : void public function testSQLFilterAddConstraint() : void { - $metadataBuildingContext = new ClassMetadataBuildingContext( - $this->createMock(ClassMetadataFactory::class), - $this->createMock(ReflectionService::class), - $this->createMock(AbstractPlatform::class) - ); - $filter = new MySoftDeleteFilter($this->getMockEntityManager()); // Test for an entity that gets extra filter data - $metadata = new ClassMetadata('MyEntity\SoftDeleteNewsItem', null, $metadataBuildingContext); + $metadata = new ClassMetadata('MyEntity\SoftDeleteNewsItem', null); self::assertEquals('t1_.deleted = 0', $filter->addFilterConstraint($metadata, 't1_')); // Test for an entity that doesn't get extra filter data - $metadata = new ClassMetadata('MyEntity\NoSoftDeleteNewsItem', null, $metadataBuildingContext); + $metadata = new ClassMetadata('MyEntity\NoSoftDeleteNewsItem', null); self::assertEquals('', $filter->addFilterConstraint($metadata, 't1_')); } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3103Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3103Test.php index eadb806e9c4..9ff43f8a008 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3103Test.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3103Test.php @@ -32,7 +32,7 @@ public function testIssue() : void $this->createMock(ReflectionService::class) ); - $classMetadata = new ClassMetadata(DDC3103ArticleId::class, $metadataBuildingContext); + $classMetadata = new ClassMetadata(DDC3103ArticleId::class); $driver->loadMetadataForClass(DDC3103ArticleId::class, $classMetadata, $metadataBuildingContext); diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataFactoryTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataFactoryTest.php index d2ecaabef60..ef452eff5c4 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataFactoryTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataFactoryTest.php @@ -6,7 +6,6 @@ use Doctrine\Common\EventManager; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\Type; use Doctrine\ORM\Configuration; use Doctrine\ORM\EntityManagerInterface; @@ -17,7 +16,6 @@ use Doctrine\ORM\Mapping\ClassMetadataFactory; use Doctrine\ORM\Mapping\Driver\MappingDriver; use Doctrine\ORM\Mapping\MappingException; -use Doctrine\ORM\Reflection\ReflectionService; use Doctrine\ORM\Sequencing\Generator; use Doctrine\Tests\Mocks\ConnectionMock; use Doctrine\Tests\Mocks\DriverMock; @@ -201,14 +199,7 @@ protected function createTestFactory() */ protected function createValidClassMetadata() { - // Self-made metadata - $metadataBuildingContext = new Mapping\ClassMetadataBuildingContext( - $this->createMock(ClassMetadataFactory::class), - $this->createMock(ReflectionService::class), - $this->createMock(AbstractPlatform::class) - ); - - $cm1 = new ClassMetadata(TestEntity1::class, null, $metadataBuildingContext); + $cm1 = new ClassMetadata(TestEntity1::class, null); $tableMetadata = new Mapping\TableMetadata(); $tableMetadata->setName('group'); diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php index 22eeeb8df76..2861487795c 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php @@ -4,14 +4,12 @@ namespace Doctrine\Tests\ORM\Mapping; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\Type; use Doctrine\ORM\Events; use Doctrine\ORM\Mapping; use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\ORM\Mapping\DiscriminatorColumnMetadata; use Doctrine\ORM\Mapping\Factory\DefaultNamingStrategy; -use Doctrine\ORM\Mapping\Factory\UnderscoreNamingStrategy; use Doctrine\ORM\Mapping\JoinColumnMetadata; use Doctrine\ORM\Mapping\MappingException; use Doctrine\ORM\Reflection\RuntimeReflectionService; @@ -28,10 +26,8 @@ use Doctrine\Tests\Models\DDC964\DDC964Guest; use Doctrine\Tests\OrmTestCase; use DoctrineGlobalArticle; -use PHPUnit_Framework_MockObject_MockObject; use ReflectionClass; use stdClass; -use const CASE_UPPER; use function reset; use function serialize; use function str_replace; @@ -44,26 +40,11 @@ class ClassMetadataTest extends OrmTestCase { - /** @var Mapping\ClassMetadataBuildingContext|PHPUnit_Framework_MockObject_MockObject */ - private $metadataBuildingContext; - - public function setUp() : void - { - parent::setUp(); - - $this->metadataBuildingContext = new Mapping\ClassMetadataBuildingContext( - $this->createMock(Mapping\ClassMetadataFactory::class), - new RuntimeReflectionService(), - $this->createMock(AbstractPlatform::class) - ); - } - public function testClassMetadataInstanceSimpleState() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); - self::assertInstanceOf(ReflectionClass::class, $cm->getReflectionClass()); self::assertEquals(CMS\CmsUser::class, $cm->getClassName()); self::assertEquals(CMS\CmsUser::class, $cm->getRootClassName()); self::assertEquals([], $cm->getSubClasses()); @@ -73,10 +54,10 @@ public function testClassMetadataInstanceSimpleState() : void public function testClassMetadataInstanceSerialization() : void { - $parent = new ClassMetadata(CMS\CmsEmployee::class, null, $this->metadataBuildingContext); + $parent = new ClassMetadata(CMS\CmsEmployee::class, null); $parent->setTable(new Mapping\TableMetadata('cms_employee')); - $cm = new ClassMetadata(CMS\CmsUser::class, $parent, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, $parent); $cm->setTable($parent->table); $cm->setParent($parent); @@ -137,7 +118,7 @@ public function testClassMetadataInstanceSerialization() : void public function testFieldIsNullable() : void { - $metadata = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata(CMS\CmsUser::class, null); $metadata->setTable(new Mapping\TableMetadata('cms_users')); // Explicit Nullable @@ -186,7 +167,7 @@ public function testMapAssociationInGlobalNamespace() : void { require_once __DIR__ . '/../../Models/Global/GlobalNamespaceModel.php'; - $cm = new ClassMetadata(DoctrineGlobalArticle::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DoctrineGlobalArticle::class, null); $cm->setTable(new Mapping\TableMetadata('doctrine_global_article')); $joinTable = new Mapping\JoinTableMetadata(); @@ -218,7 +199,7 @@ public function testMapManyToManyJoinTableDefaults() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\ManyToManyAssociationMetadata('groups'); @@ -260,7 +241,7 @@ public function testSerializeManyToManyJoinTableCascade() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\ManyToManyAssociationMetadata('groups'); @@ -286,7 +267,7 @@ public function testSetDiscriminatorMapInGlobalNamespace() : void { require_once __DIR__ . '/../../Models/Global/GlobalNamespaceModel.php'; - $cm = new ClassMetadata('DoctrineGlobalUser', null, $this->metadataBuildingContext); + $cm = new ClassMetadata('DoctrineGlobalUser', null); $cm->setTable(new Mapping\TableMetadata('doctrine_global_user')); $cm->setDiscriminatorMap(['descr' => 'DoctrineGlobalArticle', 'foo' => 'DoctrineGlobalUser']); @@ -302,7 +283,7 @@ public function testSetSubClassesInGlobalNamespace() : void { require_once __DIR__ . '/../../Models/Global/GlobalNamespaceModel.php'; - $cm = new ClassMetadata('DoctrineGlobalUser', null, $this->metadataBuildingContext); + $cm = new ClassMetadata('DoctrineGlobalUser', null); $cm->setTable(new Mapping\TableMetadata('doctrine_global_user')); $cm->setSubclasses(['DoctrineGlobalArticle']); @@ -317,7 +298,7 @@ public function testSetInvalidVersionMappingThrowsException() : void { $this->markTestIncomplete('This test needs to be moved to FieldMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $property = new Mapping\FieldMetadata('foo'); @@ -334,7 +315,7 @@ public function testSetInvalidVersionMappingThrowsException() : void public function testGetSingleIdentifierFieldNameMultipleIdentifierEntityThrowsException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $fieldMetadata = new Mapping\FieldMetadata('name'); @@ -356,7 +337,7 @@ public function testGetSingleIdentifierFieldNameMultipleIdentifierEntityThrowsEx public function testGetSingleIdentifierFieldNameNoIdEntityThrowsException() : void { - $cm = new ClassMetadata(DDC6412File::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC6412File::class, null); $cm->setTable(new Mapping\TableMetadata('ddc6412_file')); $this->expectException(MappingException::class); @@ -366,7 +347,7 @@ public function testGetSingleIdentifierFieldNameNoIdEntityThrowsException() : vo public function testDuplicateAssociationMappingException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\OneToOneAssociationMetadata('foo'); @@ -394,7 +375,7 @@ public function testDuplicateColumnNameThrowsMappingException() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $fieldMetadata = new Mapping\FieldMetadata('name'); @@ -409,7 +390,7 @@ public function testDuplicateColumnNameThrowsMappingException() : void public function testDuplicateColumnNameDiscriminatorColumnThrowsMappingException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $discrColumn = new DiscriminatorColumnMetadata(); @@ -425,7 +406,7 @@ public function testDuplicateColumnNameDiscriminatorColumnThrowsMappingException public function testDuplicateFieldAndAssociationMapping1ThrowsException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $fieldMetadata = new Mapping\FieldMetadata('name'); @@ -445,7 +426,7 @@ public function testDuplicateFieldAndAssociationMapping1ThrowsException() : void public function testDuplicateFieldAndAssociationMapping2ThrowsException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\OneToOneAssociationMetadata('name'); @@ -468,7 +449,7 @@ public function testDuplicateFieldAndAssociationMapping2ThrowsException() : void */ public function testGetTemporaryTableNameSchema() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $tableMetadata = new Mapping\TableMetadata(); @@ -485,14 +466,14 @@ public function testDefaultTableName() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('CmsUser')); // When table's name is not given self::assertEquals('CmsUser', $cm->getTableName()); self::assertEquals('CmsUser', $cm->table->getName()); - $cm = new ClassMetadata(CMS\CmsAddress::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsAddress::class, null); // When joinTable's name is not given $joinTable = new Mapping\JoinTableMetadata(); @@ -524,7 +505,7 @@ public function testDefaultJoinColumnName() : void { $this->markTestIncomplete('This test needs to be moved to JoinColumnMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsAddress::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsAddress::class, null); $cm->setTable(new Mapping\TableMetadata('cms_address')); // this is really dirty, but it's the simplest way to test whether @@ -550,7 +531,7 @@ public function testDefaultJoinColumnName() : void self::assertEquals('user_id', $joinColumn->getColumnName()); - $cm = new ClassMetadata(CMS\CmsAddress::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsAddress::class, null); $cm->setTable(new Mapping\TableMetadata('cms_address')); $joinTable = new Mapping\JoinTableMetadata(); @@ -592,15 +573,7 @@ public function testOneToOneUnderscoreNamingStrategyDefaults() : void { $this->markTestIncomplete('This test needs to be moved to JoinColumnMetadataBuilderTest'); - $namingStrategy = new UnderscoreNamingStrategy(CASE_UPPER); - - $this->metadataBuildingContext = new Mapping\ClassMetadataBuildingContext( - $this->createMock(Mapping\ClassMetadataFactory::class), - new RuntimeReflectionService(), - $namingStrategy - ); - - $metadata = new ClassMetadata(CMS\CmsAddress::class, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata(CMS\CmsAddress::class, null); $metadata->setTable(new Mapping\TableMetadata('cms_address')); $association = new Mapping\OneToOneAssociationMetadata('user'); @@ -624,15 +597,7 @@ public function testManyToManyUnderscoreNamingStrategyDefaults() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $namingStrategy = new UnderscoreNamingStrategy(CASE_UPPER); - - $this->metadataBuildingContext = new Mapping\ClassMetadataBuildingContext( - $this->createMock(Mapping\ClassMetadataFactory::class), - new RuntimeReflectionService(), - $namingStrategy - ); - - $metadata = new ClassMetadata(CMS\CmsAddress::class, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata(CMS\CmsAddress::class, null); $metadata->setTable(new Mapping\TableMetadata('cms_address')); $association = new Mapping\ManyToManyAssociationMetadata('user'); @@ -656,7 +621,7 @@ public function testManyToManyUnderscoreNamingStrategyDefaults() : void self::assertEquals('CMS_USER_ID', $inverseJoinColumn->getColumnName()); self::assertEquals('ID', $inverseJoinColumn->getReferencedColumnName()); - $cm = new ClassMetadata('DoctrineGlobalArticle', null, $this->metadataBuildingContext); + $cm = new ClassMetadata('DoctrineGlobalArticle', null); $association = new Mapping\ManyToManyAssociationMetadata('author'); @@ -674,7 +639,7 @@ public function testManyToManyUnderscoreNamingStrategyDefaults() : void */ public function testSetMultipleIdentifierSetsComposite() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $fieldMetadata = new Mapping\FieldMetadata('name'); @@ -699,7 +664,7 @@ public function testJoinTableMappingDefaults() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $cm = new ClassMetadata('DoctrineGlobalArticle', null, $this->metadataBuildingContext); + $cm = new ClassMetadata('DoctrineGlobalArticle', null); $association = new Mapping\ManyToManyAssociationMetadata('author'); @@ -717,7 +682,7 @@ public function testJoinTableMappingDefaults() : void */ public function testMapIdentifierAssociation() : void { - $cm = new ClassMetadata(DDC117ArticleDetails::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC117ArticleDetails::class, null); $cm->setTable(new Mapping\TableMetadata('ddc117_article_details')); $association = new Mapping\OneToOneAssociationMetadata('article'); @@ -737,7 +702,7 @@ public function testOrphanRemovalIdentifierAssociation() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(DDC117ArticleDetails::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC117ArticleDetails::class, null); $cm->setTable(new Mapping\TableMetadata('ddc117_article_details')); $this->expectException(MappingException::class); @@ -759,7 +724,7 @@ public function testInverseIdentifierAssociation() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(DDC117ArticleDetails::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC117ArticleDetails::class, null); $cm->setTable(new Mapping\TableMetadata('ddc117_article_details')); $this->expectException(MappingException::class); @@ -782,7 +747,7 @@ public function testIdentifierAssociationManyToMany() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(DDC117ArticleDetails::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC117ArticleDetails::class, null); $cm->setTable(new Mapping\TableMetadata('ddc117_article_details')); $this->expectException(MappingException::class); @@ -804,7 +769,7 @@ public function testEmptyFieldNameThrowsException() : void $this->expectException(MappingException::class); $this->expectExceptionMessage("The field or association mapping misses the 'fieldName' attribute in entity '" . CMS\CmsUser::class . "'."); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $fieldMetadata = new Mapping\FieldMetadata(''); @@ -819,7 +784,7 @@ public function testEmptyFieldNameThrowsException() : void */ public function testSerializeEntityListeners() : void { - $metadata = new ClassMetadata(CompanyContract::class, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata(CompanyContract::class, null); $metadata->addEntityListener(Events::prePersist, CompanyContractListener::class, 'prePersistHandler'); $metadata->addEntityListener(Events::postPersist, CompanyContractListener::class, 'postPersistHandler'); @@ -835,7 +800,9 @@ public function testSerializeEntityListeners() : void */ public function testClassCaseSensitivity() : void { - $cm = new ClassMetadata(strtoupper(CMS\CmsUser::class), null, $this->metadataBuildingContext); + $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); + + $cm = new ClassMetadata(strtoupper(CMS\CmsUser::class), null); $cm->setTable(new Mapping\TableMetadata('cms_users')); self::assertEquals(CMS\CmsUser::class, $cm->getClassName()); @@ -846,7 +813,7 @@ public function testClassCaseSensitivity() : void */ public function testLifecycleCallbackNotFound() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $cm->addLifecycleCallback('postLoad', 'notfound'); @@ -864,7 +831,7 @@ public function testTargetEntityNotFound() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\ManyToOneAssociationMetadata('address'); @@ -888,7 +855,7 @@ public function testInvalidCascade() : void { $this->markTestIncomplete('This test needs to be moved to ClassMetadataBuilderTest'); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $association = new Mapping\ManyToOneAssociationMetadata('address'); @@ -906,7 +873,7 @@ public function testInvalidCascade() : void */ public function testInvalidPropertyAssociationOverrideNameException() : void { - $cm = new ClassMetadata(DDC964Admin::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC964Admin::class, null); $cm->setTable(new Mapping\TableMetadata('ddc964_admin')); $association = new Mapping\ManyToOneAssociationMetadata('address'); @@ -925,7 +892,7 @@ public function testInvalidPropertyAssociationOverrideNameException() : void */ public function testInvalidPropertyAttributeOverrideNameException() : void { - $cm = new ClassMetadata(DDC964Guest::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(DDC964Guest::class, null); $cm->setTable(new Mapping\TableMetadata('ddc964_guest')); $fieldMetadata = new Mapping\FieldMetadata('name'); @@ -946,7 +913,7 @@ public function testInvalidPropertyAttributeOverrideNameException() : void */ public function testInvalidEntityListenerClassException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $cm->addEntityListener(Events::postLoad, '\InvalidClassName', 'postLoadHandler'); @@ -959,7 +926,7 @@ public function testInvalidEntityListenerClassException() : void */ public function testInvalidEntityListenerMethodException() : void { - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $cm->addEntityListener(Events::postLoad, 'Doctrine\Tests\Models\Company\CompanyContractListener', 'invalidMethod'); @@ -969,7 +936,7 @@ public function testManyToManySelfReferencingNamingStrategyDefaults() : void { $this->markTestIncomplete('This test needs to be moved to JoinTableMetadataBuilderTest'); - $cm = new ClassMetadata(CustomTypeParent::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CustomTypeParent::class, null); $cm->setTable(new Mapping\TableMetadata('custom_type_parent')); $association = new Mapping\ManyToManyAssociationMetadata('friendsWithMe'); @@ -1019,7 +986,7 @@ public function testQuotedSequenceName() : void . ' part of the metadata drivers' ); - $cm = new ClassMetadata(CMS\CmsUser::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(CMS\CmsUser::class, null); $cm->setTable(new Mapping\TableMetadata('cms_users')); $id = new Mapping\FieldMetadata('id'); @@ -1043,7 +1010,7 @@ public function testQuotedSequenceName() : void */ public function testIsIdentifierMappedSuperClass() : void { - $class = new ClassMetadata(DDC2700MappedSuperClass::class, null, $this->metadataBuildingContext); + $class = new ClassMetadata(DDC2700MappedSuperClass::class, null); self::assertFalse($class->isIdentifier('foo')); } @@ -1053,7 +1020,7 @@ public function testIsIdentifierMappedSuperClass() : void */ public function testWakeupReflectionWithEmbeddableAndStaticReflectionService() : void { - $metadata = new ClassMetadata(TestEntity1::class, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata(TestEntity1::class, null); $cm->setTable(new Mapping\TableMetadata('test_entity1')); $metadata->mapEmbedded( diff --git a/tests/Doctrine/Tests/ORM/Proxy/ProxyFactoryTest.php b/tests/Doctrine/Tests/ORM/Proxy/ProxyFactoryTest.php index b9c0773e5b4..1d87f2f79b5 100644 --- a/tests/Doctrine/Tests/ORM/Proxy/ProxyFactoryTest.php +++ b/tests/Doctrine/Tests/ORM/Proxy/ProxyFactoryTest.php @@ -103,9 +103,11 @@ public function testReferenceProxyDelegatesLoadingToThePersister() : void public function testSkipMappedSuperClassesOnGeneration() : void { - $cm = new ClassMetadata(stdClass::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(stdClass::class, null); $cm->isMappedSuperclass = true; + $cm->wakeupReflection($this->metadataBuildingContext->getReflectionService()); + self::assertSame( 0, $this->proxyFactory->generateProxyClasses([$cm]), @@ -119,9 +121,11 @@ public function testSkipMappedSuperClassesOnGeneration() : void */ public function testSkipEmbeddableClassesOnGeneration() : void { - $cm = new ClassMetadata(stdClass::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(stdClass::class, null); $cm->isEmbeddedClass = true; + $cm->wakeupReflection($this->metadataBuildingContext->getReflectionService()); + self::assertSame( 0, $this->proxyFactory->generateProxyClasses([$cm]), @@ -134,7 +138,9 @@ public function testSkipEmbeddableClassesOnGeneration() : void */ public function testSkipAbstractClassesOnGeneration() : void { - $cm = new ClassMetadata(AbstractClass::class, null, $this->metadataBuildingContext); + $cm = new ClassMetadata(AbstractClass::class, null); + + $cm->wakeupReflection($this->metadataBuildingContext->getReflectionService()); self::assertNotNull($cm->getReflectionClass()); diff --git a/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php b/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php index 3c39478082a..ee891928ec6 100644 --- a/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php +++ b/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php @@ -4,13 +4,9 @@ namespace Doctrine\Tests\ORM\Repository; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\ORM\Configuration; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\ORM\Mapping\ClassMetadataBuildingContext; -use Doctrine\ORM\Mapping\ClassMetadataFactory; -use Doctrine\ORM\Reflection\ReflectionService; use Doctrine\ORM\Repository\DefaultRepositoryFactory; use Doctrine\Tests\DoctrineTestCase; use Doctrine\Tests\Models\DDC753\DDC753DefaultRepository; @@ -33,22 +29,14 @@ class DefaultRepositoryFactoryTest extends DoctrineTestCase /** @var DefaultRepositoryFactory */ private $repositoryFactory; - /** @var ClassMetadataBuildingContext|MockObject */ - private $metadataBuildingContext; - /** * {@inheritDoc} */ protected function setUp() : void { - $this->metadataBuildingContext = new ClassMetadataBuildingContext( - $this->createMock(ClassMetadataFactory::class), - $this->createMock(ReflectionService::class), - $this->createMock(AbstractPlatform::class) - ); - $this->configuration = $this->createMock(Configuration::class); - $this->entityManager = $this->createEntityManager(); - $this->repositoryFactory = new DefaultRepositoryFactory(); + $this->configuration = $this->createMock(Configuration::class); + $this->entityManager = $this->createEntityManager(); + $this->repositoryFactory = new DefaultRepositoryFactory(); $this->configuration ->expects($this->any()) @@ -130,7 +118,7 @@ public function testCachesDistinctRepositoriesPerDistinctEntityManager() : void */ public function buildClassMetadata($className) { - $metadata = new ClassMetadata($className, null, $this->metadataBuildingContext); + $metadata = new ClassMetadata($className, null); $metadata->setCustomRepositoryClassName(null); diff --git a/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php b/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php index c4724232a40..b19625b0912 100644 --- a/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php +++ b/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php @@ -9,11 +9,8 @@ use Doctrine\Common\EventManager; use Doctrine\Common\NotifyPropertyChanged; use Doctrine\Common\PropertyChangedListener; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\ORM\Annotation as ORM; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\ORM\Mapping\ClassMetadataBuildingContext; -use Doctrine\ORM\Mapping\ClassMetadataFactory; use Doctrine\ORM\Mapping\GeneratorType; use Doctrine\ORM\ORMInvalidArgumentException; use Doctrine\ORM\Reflection\RuntimeReflectionService; @@ -67,19 +64,10 @@ class UnitOfWorkTest extends OrmTestCase /** @var EventManager|PHPUnit_Framework_MockObject_MockObject */ private $eventManager; - /** @var ClassMetadataBuildingContext|PHPUnit_Framework_MockObject_MockObject */ - private $metadataBuildingContext; - protected function setUp() : void { parent::setUp(); - $this->metadataBuildingContext = new ClassMetadataBuildingContext( - $this->createMock(ClassMetadataFactory::class), - new RuntimeReflectionService(), - $this->createMock(AbstractPlatform::class) - ); - $this->eventManager = $this->getMockBuilder(EventManager::class)->getMock(); $this->connectionMock = new ConnectionMock([], new DriverMock(), null, $this->eventManager); $this->emMock = EntityManagerMock::create($this->connectionMock, null, $this->eventManager); @@ -645,7 +633,7 @@ public function testPreviousDetectedIllegalNewNonCascadedEntitiesAreCleanedUpOnS */ public function testCanInstantiateInternalPhpClassSubclass() : void { - $classMetadata = new ClassMetadata(MyArrayObjectEntity::class, null, $this->metadataBuildingContext); + $classMetadata = new ClassMetadata(MyArrayObjectEntity::class, null); self::assertInstanceOf(MyArrayObjectEntity::class, $this->unitOfWork->newInstance($classMetadata)); } @@ -658,7 +646,7 @@ public function testCanInstantiateInternalPhpClassSubclassFromUnserializedMetada /** @var ClassMetadata $classMetadata */ $classMetadata = unserialize( serialize( - new ClassMetadata(MyArrayObjectEntity::class, null, $this->metadataBuildingContext) + new ClassMetadata(MyArrayObjectEntity::class, null) ) ); diff --git a/tests/Doctrine/Tests/ORM/Utility/HierarchyDiscriminatorResolverTest.php b/tests/Doctrine/Tests/ORM/Utility/HierarchyDiscriminatorResolverTest.php index 44464210903..cbfced340f4 100644 --- a/tests/Doctrine/Tests/ORM/Utility/HierarchyDiscriminatorResolverTest.php +++ b/tests/Doctrine/Tests/ORM/Utility/HierarchyDiscriminatorResolverTest.php @@ -4,35 +4,20 @@ namespace Doctrine\Tests\ORM\Utility; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\ORM\EntityManagerInterface; -use Doctrine\ORM\Mapping; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\ORM\Reflection\StaticReflectionService; use Doctrine\ORM\Utility\HierarchyDiscriminatorResolver; use PHPUnit\Framework\TestCase; class HierarchyDiscriminatorResolverTest extends TestCase { - /** @var Mapping\ClassMetadataBuildingContext */ - private $staticMetadataBuildingContext; - - public function setUp() : void - { - $this->staticMetadataBuildingContext = new Mapping\ClassMetadataBuildingContext( - $this->createMock(Mapping\ClassMetadataFactory::class), - new StaticReflectionService(), - $this->createMock(AbstractPlatform::class) - ); - } - public function testResolveDiscriminatorsForClass() : void { - $classMetadata = new ClassMetadata('Entity', null, $this->staticMetadataBuildingContext); + $classMetadata = new ClassMetadata('Entity', null); $classMetadata->name = 'Some\Class\Name'; $classMetadata->discriminatorValue = 'discriminator'; - $childClassMetadata = new ClassMetadata('ChildEntity', $classMetadata, $this->staticMetadataBuildingContext); + $childClassMetadata = new ClassMetadata('ChildEntity', $classMetadata); $childClassMetadata->name = 'Some\Class\Child\Name'; $childClassMetadata->discriminatorValue = 'child-discriminator'; @@ -55,7 +40,7 @@ public function testResolveDiscriminatorsForClass() : void public function testResolveDiscriminatorsForClassWithNoSubclasses() : void { - $classMetadata = new ClassMetadata('Entity', null, $this->staticMetadataBuildingContext); + $classMetadata = new ClassMetadata('Entity', null); $classMetadata->setSubclasses([]); $classMetadata->name = 'Some\Class\Name'; $classMetadata->discriminatorValue = 'discriminator';