mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 15:51:48 +03:00
Fix DunglasJsonLdApiBundle support
This commit is contained in:
parent
ef917f257d
commit
c47265bb71
@ -34,7 +34,7 @@ class LoadExtractorParsersPass implements CompilerPassInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DunglasJsonLdApiBundle may or may not be installed, if it is, load that config as well
|
// DunglasJsonLdApiBundle may or may not be installed, if it is, load that config as well
|
||||||
if ($container->hasDefinition('dunglas_json_ld_api.resources')) {
|
if ($container->hasDefinition('dunglas_json_ld_api.resource_collection')) {
|
||||||
$loader->load('services.dunglas_json_ld_api.xml');
|
$loader->load('services.dunglas_json_ld_api.xml');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
namespace Nelmio\ApiDocBundle\Extractor\AnnotationsProvider;
|
namespace Nelmio\ApiDocBundle\Extractor\AnnotationsProvider;
|
||||||
|
|
||||||
use Doctrine\Common\Annotations\Reader;
|
use Doctrine\Common\Annotations\Reader;
|
||||||
use Dunglas\JsonLdApiBundle\JsonLd\Resource;
|
use Dunglas\JsonLdApiBundle\JsonLd\ResourceCollectionInterface;
|
||||||
use Dunglas\JsonLdApiBundle\JsonLd\Resources;
|
use Dunglas\JsonLdApiBundle\JsonLd\ResourceInterface;
|
||||||
use Dunglas\JsonLdApiBundle\Mapping\ClassMetadataFactory;
|
use Dunglas\JsonLdApiBundle\Mapping\ClassMetadataFactory;
|
||||||
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
||||||
use Nelmio\ApiDocBundle\Extractor\AnnotationsProviderInterface;
|
use Nelmio\ApiDocBundle\Extractor\AnnotationsProviderInterface;
|
||||||
@ -26,17 +26,17 @@ use Nelmio\ApiDocBundle\Extractor\AnnotationsProviderInterface;
|
|||||||
class DunglasJsonLdApiProvider implements AnnotationsProviderInterface
|
class DunglasJsonLdApiProvider implements AnnotationsProviderInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Resources
|
* @var ResourceCollectionInterface
|
||||||
*/
|
*/
|
||||||
private $resources;
|
private $resourceCollection;
|
||||||
/**
|
/**
|
||||||
* @var ClassMetadataFactory
|
* @var ClassMetadataFactory
|
||||||
*/
|
*/
|
||||||
private $classMetadataFactory;
|
private $classMetadataFactory;
|
||||||
|
|
||||||
public function __construct(Resources $resources, ClassMetadataFactory $classMetadataFactory)
|
public function __construct(ResourceCollectionInterface $resourceCollection, ClassMetadataFactory $classMetadataFactory)
|
||||||
{
|
{
|
||||||
$this->resources = $resources;
|
$this->resourceCollection = $resourceCollection;
|
||||||
$this->classMetadataFactory = $classMetadataFactory;
|
$this->classMetadataFactory = $classMetadataFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,10 @@ class DunglasJsonLdApiProvider implements AnnotationsProviderInterface
|
|||||||
public function getAnnotations()
|
public function getAnnotations()
|
||||||
{
|
{
|
||||||
$annotations = [];
|
$annotations = [];
|
||||||
foreach ($this->resources as $resource) {
|
/**
|
||||||
|
* @var ResourceInterface $resource
|
||||||
|
*/
|
||||||
|
foreach ($this->resourceCollection as $resource) {
|
||||||
$resource->getRouteCollection(); // Populate !route
|
$resource->getRouteCollection(); // Populate !route
|
||||||
|
|
||||||
foreach ($resource->getCollectionOperations() as $operation) {
|
foreach ($resource->getCollectionOperations() as $operation) {
|
||||||
@ -64,12 +67,12 @@ class DunglasJsonLdApiProvider implements AnnotationsProviderInterface
|
|||||||
/**
|
/**
|
||||||
* Builds ApiDoc annotation from DunglasJsonLdApiBundle data.
|
* Builds ApiDoc annotation from DunglasJsonLdApiBundle data.
|
||||||
*
|
*
|
||||||
* @param Resource $resource
|
* @param ResourceInterface $resource
|
||||||
* @param array $operation
|
* @param array $operation
|
||||||
*
|
*
|
||||||
* @return ApiDoc
|
* @return ApiDoc
|
||||||
*/
|
*/
|
||||||
private function getApiDoc(Resource $resource, array $operation)
|
private function getApiDoc(ResourceInterface $resource, array $operation)
|
||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
'resource' => $operation['!route_path'],
|
'resource' => $operation['!route_path'],
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
|
|
||||||
namespace Nelmio\ApiDocBundle\Parser;
|
namespace Nelmio\ApiDocBundle\Parser;
|
||||||
|
|
||||||
use Dunglas\JsonLdApiBundle\JsonLd\Resources;
|
use Dunglas\JsonLdApiBundle\JsonLd\ResourceCollectionInterface;
|
||||||
|
use Dunglas\JsonLdApiBundle\JsonLd\ResourceInterface;
|
||||||
use Dunglas\JsonLdApiBundle\Mapping\ClassMetadataFactory;
|
use Dunglas\JsonLdApiBundle\Mapping\ClassMetadataFactory;
|
||||||
use Nelmio\ApiDocBundle\DataTypes;
|
use Nelmio\ApiDocBundle\DataTypes;
|
||||||
|
|
||||||
@ -23,17 +24,17 @@ use Nelmio\ApiDocBundle\DataTypes;
|
|||||||
class DunglasJsonLdApiParser implements ParserInterface
|
class DunglasJsonLdApiParser implements ParserInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Resources
|
* @var ResourceCollectionInterface
|
||||||
*/
|
*/
|
||||||
private $resources;
|
private $resourceCollection;
|
||||||
/**
|
/**
|
||||||
* @var ClassMetadataFactory
|
* @var ClassMetadataFactory
|
||||||
*/
|
*/
|
||||||
private $classMetadataFactory;
|
private $classMetadataFactory;
|
||||||
|
|
||||||
public function __construct(Resources $resources, ClassMetadataFactory $classMetadataFactory)
|
public function __construct(ResourceCollectionInterface $resourceCollection, ClassMetadataFactory $classMetadataFactory)
|
||||||
{
|
{
|
||||||
$this->resources = $resources;
|
$this->resourceCollection = $resourceCollection;
|
||||||
$this->classMetadataFactory = $classMetadataFactory;
|
$this->classMetadataFactory = $classMetadataFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ class DunglasJsonLdApiParser implements ParserInterface
|
|||||||
*/
|
*/
|
||||||
public function supports(array $item)
|
public function supports(array $item)
|
||||||
{
|
{
|
||||||
return null !== $this->resources->getResourceForEntity($item['class']);
|
return null !== $this->resourceCollection->getResourceForEntity($item['class']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,9 +52,9 @@ class DunglasJsonLdApiParser implements ParserInterface
|
|||||||
public function parse(array $item)
|
public function parse(array $item)
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var $resource \Dunglas\JsonLdApiBundle\JsonLd\Resource
|
* @var $resource ResourceInterface
|
||||||
*/
|
*/
|
||||||
$resource = $this->resources->getResourceForEntity($item['class']);
|
$resource = $this->resourceCollection->getResourceForEntity($item['class']);
|
||||||
$classMetadata = $this->classMetadataFactory->getMetadataFor(
|
$classMetadata = $this->classMetadataFactory->getMetadataFor(
|
||||||
$resource->getEntityClass(),
|
$resource->getEntityClass(),
|
||||||
$resource->getNormalizationGroups(),
|
$resource->getNormalizationGroups(),
|
||||||
@ -85,6 +86,8 @@ class DunglasJsonLdApiParser implements ParserInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data[$attribute->getName()]['dataType'] = $dataType;
|
$data[$attribute->getName()]['dataType'] = $dataType;
|
||||||
|
} else {
|
||||||
|
$data[$attribute->getName()]['dataType'] = DataTypes::STRING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
<services>
|
<services>
|
||||||
<service id="nelmio_api_doc.annotations_provider.dunglas_json_ld_api_annotation_provider" class="Nelmio\ApiDocBundle\Extractor\AnnotationsProvider\DunglasJsonLdApiProvider">
|
<service id="nelmio_api_doc.annotations_provider.dunglas_json_ld_api_annotation_provider" class="Nelmio\ApiDocBundle\Extractor\AnnotationsProvider\DunglasJsonLdApiProvider">
|
||||||
<argument type="service" id="dunglas_json_ld_api.resources" />
|
<argument type="service" id="dunglas_json_ld_api.resource_collection" />
|
||||||
<argument type="service" id="dunglas_json_ld_api.mapping.class_metadata_factory" />
|
<argument type="service" id="dunglas_json_ld_api.mapping.class_metadata_factory" />
|
||||||
|
|
||||||
<tag name="nelmio_api_doc.extractor.annotations_provider" />
|
<tag name="nelmio_api_doc.extractor.annotations_provider" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="nelmio_api_doc.parser.dunglas_json_ld_api_parser" class="Nelmio\ApiDocBundle\Parser\DunglasJsonLdApiParser">
|
<service id="nelmio_api_doc.parser.dunglas_json_ld_api_parser" class="Nelmio\ApiDocBundle\Parser\DunglasJsonLdApiParser">
|
||||||
<argument type="service" id="dunglas_json_ld_api.resources" />
|
<argument type="service" id="dunglas_json_ld_api.resource_collection" />
|
||||||
<argument type="service" id="dunglas_json_ld_api.mapping.class_metadata_factory" />
|
<argument type="service" id="dunglas_json_ld_api.mapping.class_metadata_factory" />
|
||||||
|
|
||||||
<tag name="nelmio_api_doc.extractor.parser" />
|
<tag name="nelmio_api_doc.extractor.parser" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user