diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php index 6429989cd..d4790f62b 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php @@ -254,7 +254,7 @@ class ClassMetadataFactory // Invoke driver try { $this->_driver->loadMetadataForClass($className, $class); - } catch(ReflectionException $e) { + } catch(ReflectionException $e) { throw MappingException::reflectionFailure($className, $e); } diff --git a/lib/Doctrine/ORM/Mapping/Driver/DriverChain.php b/lib/Doctrine/ORM/Mapping/Driver/DriverChain.php index 3abf3480c..d97a61e5b 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/DriverChain.php +++ b/lib/Doctrine/ORM/Mapping/Driver/DriverChain.php @@ -96,8 +96,8 @@ class DriverChain implements Driver /** * Whether the class with the specified name should have its metadata loaded. - * This is only the case if it is either mapped as an Entity or a - * MappedSuperclass. + * + * This is only the case for non-transient classes either mapped as an Entity or MappedSuperclass. * * @param string $className * @return boolean @@ -110,6 +110,7 @@ class DriverChain implements Driver } } - throw MappingException::classIsNotAValidEntityOrMappedSuperClass($className); + // class isTransient, i.e. not an entity or mapped superclass + return true; } } \ No newline at end of file diff --git a/tests/Doctrine/Tests/ORM/Mapping/AllTests.php b/tests/Doctrine/Tests/ORM/Mapping/AllTests.php index dcd5c768c..30a8ead5b 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/AllTests.php +++ b/tests/Doctrine/Tests/ORM/Mapping/AllTests.php @@ -28,6 +28,7 @@ class AllTests $suite->addTestSuite('Doctrine\Tests\ORM\Mapping\ClassMetadataFactoryTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Mapping\ClassMetadataLoadEventTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Mapping\BasicInheritanceMappingTest'); + $suite->addTestSuite('Doctrine\Tests\ORM\Mapping\DriverChainTest'); return $suite; } diff --git a/tests/Doctrine/Tests/ORM/Mapping/DriverChainTest.php b/tests/Doctrine/Tests/ORM/Mapping/DriverChainTest.php index bc00bf72b..333b8638b 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/DriverChainTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/DriverChainTest.php @@ -50,17 +50,6 @@ class DriverChainTest extends \Doctrine\Tests\OrmTestCase $chain->loadMetadataForClass($className, $classMetadata); } - public function testIsTransient_NoDelegatorFound_ThrowsMappingException() - { - $className = 'Doctrine\Tests\ORM\Mapping\DriverChainEntity'; - $classMetadata = new \Doctrine\ORM\Mapping\ClassMetadata($className); - - $chain = new DriverChain(); - - $this->setExpectedException('Doctrine\ORM\Mapping\MappingException'); - $chain->isTransient($className); - } - public function testGatherAllClassNames() { $className = 'Doctrine\Tests\ORM\Mapping\DriverChainEntity'; @@ -83,6 +72,21 @@ class DriverChainTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals(array('Foo', 'Bar', 'Baz'), $chain->getAllClassNames()); } + + /** + * @group DDC-706 + */ + public function testIsTransient() + { + $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache()); + $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\'); + + $chain = new DriverChain(); + $chain->addDriver(new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader, array()), 'Doctrine\Tests\Models\CMS'); + + $this->assertTrue($chain->isTransient('stdClass'), "stdClass isTransient"); + $this->assertFalse($chain->isTransient('Doctrine\Tests\Models\CMS\CmsUser'), "CmsUser is not Transient"); + } } class DriverChainEntity