schema-generator icon indicating copy to clipboard operation
schema-generator copied to clipboard

Error 'Class "PostalAddress" does not exist' is been shown in the ApiPlatform's swagger after generating ODM documents

Open modiamir opened this issue 2 years ago • 1 comments

API Platform version(s) affected: 3.1.10

Description
I ran the generate command to generate ODM documents from a schema configuration that had two types one of them has a reference to the other one. After the documents got generated I tried to go to API Platform's API documentation and saw this error: "Class "PostalAddress" does not exist".

How to reproduce
In an API Platform project that supports MongoDB add this configuration file:

# config/schema.yaml
openApi:
    file: null
types:
    Person:
        properties:
            name: ~
            address: { range: https://schema.org/PostalAddress }
    PostalAddress:
        properties:
            streetAddress: ~

namespaces:
    entity: 'App\Document'
    enum: 'App\Enum'
    interface: 'App\Model'
annotationGenerators:
    - ApiPlatform\SchemaGenerator\AnnotationGenerator\PhpDocAnnotationGenerator
attributeGenerators:
    - ApiPlatform\SchemaGenerator\AttributeGenerator\ConstraintAttributeGenerator
    - ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineMongoDBAttributeGenerator
    - ApiPlatform\SchemaGenerator\AttributeGenerator\ApiPlatformCoreAttributeGenerator
    - ApiPlatform\SchemaGenerator\AttributeGenerator\ConfigurationAttributeGenerator

debug: true
useInterface: false
checkIsGoodRelations: true
id:
    generationStrategy: mongoid

and then run this command:

/vendor/bin/schema generate src/ config/schema.yaml

Possible Solution
The method getRelationName in class ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineMongoDBAttributeGenerator can have the logic to add the namespace of the reference class. currently, it returns only the name of the class. Something like the same method in class ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineOrmAttributeGenerator

modiamir avatar May 01 '23 21:05 modiamir

Sure, don't hesitate to do the PR to fix it.

alanpoulain avatar May 24 '23 12:05 alanpoulain