fix: use resource shortName when no operation guessed #5455
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes an issue when a shortName is set on a resource used as a subresource. The bug was introduced in https://github.com/api-platform/core/pull/4818/files
For example:
has a dependency on
ReviewAnswerResource
. When this type was checked by theTypeFactory
, a schema was generated byJsonSchema/TypeFactory.php:L155
. This call tobuildSchema
is made with the$operation
parameter set tonull
.In
JsonSchema/SchemaFactory.php:L63
we're getting the metadata of the class and retrieving an operation. This operation was an uninitializedHttpOperation
set atJsonSchema/SchemaFactory.php:L293
. So when we're callingJsonSchema/SchemaFactory.php::buildDefinitionName
, we have no operation shortName, hence the reflectionClass shortName is used (ReviewAnswerResource in this example), instead of the shortName set on theApiResource
attribute.By passing the resource shortName to this uninitialized HttpOperation, the issue is fixed and the generated OpenAPI schema is now the same as in API Platform 2.6