diff --git a/src/ZfrRest/Resource/Metadata/ResourceMetadataFactory.php b/src/ZfrRest/Resource/Metadata/ResourceMetadataFactory.php index 50de77e..ee926f1 100644 --- a/src/ZfrRest/Resource/Metadata/ResourceMetadataFactory.php +++ b/src/ZfrRest/Resource/Metadata/ResourceMetadataFactory.php @@ -19,6 +19,7 @@ namespace ZfrRest\Resource\Metadata; use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory; +use Metadata\ClassHierarchyMetadata; use Metadata\Driver\DriverInterface; use Metadata\MetadataFactory; @@ -50,6 +51,11 @@ public function __construct(ClassMetadataFactory $classMetadataFactory, DriverIn public function getMetadataForClass($className) { $resourceMetadata = parent::getMetadataForClass($className); + + if ($resourceMetadata instanceof ClassHierarchyMetadata) { + $resourceMetadata = $resourceMetadata->getOutsideClassMetadata(); + } + $resourceMetadata->propertyMetadata['classMetadata'] = $this->classMetadataFactory->getMetadataFor($className); return $resourceMetadata; diff --git a/src/ZfrRest/Router/Http/ResourceGraphRoute.php b/src/ZfrRest/Router/Http/ResourceGraphRoute.php index 2532f95..d6c29e8 100755 --- a/src/ZfrRest/Router/Http/ResourceGraphRoute.php +++ b/src/ZfrRest/Router/Http/ResourceGraphRoute.php @@ -231,6 +231,6 @@ private function getResource() )); } - return $this->resource = new Resource($this->resource, $metadata->getOutsideClassMetadata()); + return $this->resource = new Resource($this->resource, $metadata); } } diff --git a/tests/ZfrRestTest/Resource/Metadata/Driver/AnnotationDriverTest.php b/tests/ZfrRestTest/Resource/Metadata/Driver/AnnotationDriverTest.php index 82cf909..5f22b09 100644 --- a/tests/ZfrRestTest/Resource/Metadata/Driver/AnnotationDriverTest.php +++ b/tests/ZfrRestTest/Resource/Metadata/Driver/AnnotationDriverTest.php @@ -38,8 +38,7 @@ public function testMetadataFromAnnotation() $resourceMetadataFactory = $serviceManager->get('ZfrRest\Resource\Metadata\ResourceMetadataFactory'); /* @var \ZfrRest\Resource\Metadata\ResourceMetadataInterface $metadata */ - $metadata = $resourceMetadataFactory->getMetadataForClass('ZfrRestTest\Asset\Resource\Metadata\Annotation\A') - ->getOutsideClassMetadata(); + $metadata = $resourceMetadataFactory->getMetadataForClass('ZfrRestTest\Asset\Resource\Metadata\Annotation\A'); $this->assertEquals('ResourceController', $metadata->getControllerName()); $this->assertEquals('ResourceInputFilter', $metadata->getInputFilterName()); @@ -61,8 +60,7 @@ public function testAssertAssociationMetadataIsIndexedByPath() $resourceMetadataFactory = $serviceManager->get('ZfrRest\Resource\Metadata\ResourceMetadataFactory'); /* @var \ZfrRest\Resource\Metadata\ResourceMetadataInterface $metadata */ - $metadata = $resourceMetadataFactory->getMetadataForClass('ZfrRestTest\Asset\Resource\Metadata\Annotation\D') - ->getOutsideClassMetadata(); + $metadata = $resourceMetadataFactory->getMetadataForClass('ZfrRestTest\Asset\Resource\Metadata\Annotation\D'); $this->assertTrue($metadata->hasAssociationMetadata('bb')); }