Skip to content

Commit

Permalink
Properly handle when it returns a ClassHierarchy
Browse files Browse the repository at this point in the history
  • Loading branch information
bakura10 committed Feb 22, 2014
1 parent 7c40f7b commit e8ff5c9
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
6 changes: 6 additions & 0 deletions src/ZfrRest/Resource/Metadata/ResourceMetadataFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
namespace ZfrRest\Resource\Metadata;

use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory;
use Metadata\ClassHierarchyMetadata;
use Metadata\Driver\DriverInterface;
use Metadata\MetadataFactory;

Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/ZfrRest/Router/Http/ResourceGraphRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,6 @@ private function getResource()
));
}

return $this->resource = new Resource($this->resource, $metadata->getOutsideClassMetadata());
return $this->resource = new Resource($this->resource, $metadata);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -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'));
}
Expand Down

0 comments on commit e8ff5c9

Please sign in to comment.