janephp: Fatal Error - $context empty in SchemaNormalizer

When running janephp v4 for an openapi v2.0 swagger file, after about 40 minutes I get this error:

PHP Notice:  Undefined index: document-origin in /home/user/projects/janephp/vendor/jane-php/open-api/Normalizer/SchemaNormalizer.php on line 43
PHP Stack trace:
PHP   1. {main}() /home/user/projects/janephp/vendor/jane-php/open-api/bin/jane-openapi:0
PHP   2. Jane\OpenApi\Application->run() /home/user/projects/janephp/vendor/jane-php/open-api/bin/jane-openapi:22
PHP   3. Jane\OpenApi\Application->doRun() /home/user/projects/janephp/vendor/symfony/console/Application.php:148
PHP   4. Jane\OpenApi\Application->doRunCommand() /home/user/projects/janephp/vendor/symfony/console/Application.php:272
PHP   5. Jane\OpenApi\Command\GenerateCommand->run() /home/user/projects/janephp/vendor/symfony/console/Application.php:1011
PHP   6. Jane\OpenApi\Command\GenerateCommand->execute() /home/user/projects/janephp/vendor/symfony/console/Command/Command.php:255
PHP   7. Jane\OpenApi\JaneOpenApi->generate() /home/user/projects/janephp/vendor/jane-php/open-api/Command/GenerateCommand.php:69
PHP   8. Jane\OpenApi\Generator\Psr18ClientGenerator->generate() /home/user/projects/janephp/vendor/jane-php/json-schema/Generator/ChainGenerator.php:28
PHP   9. Jane\OpenApi\Generator\Psr7OperationGenerator->createOperation() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/ClientGenerator.php:43
PHP  10. Jane\OpenApi\Generator\Psr7EndpointGenerator->createEndpointClass() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/OperationGenerator.php:33
PHP  11. Jane\OpenApi\Generator\Psr7EndpointGenerator->getConstructor() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/EndpointGenerator.php:74
PHP  12. Jane\OpenApi\Generator\Psr7EndpointGenerator->resolveParameter() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/EndpointGenerator.php:145
PHP  13. Jane\JsonSchemaRuntime\Reference->resolve() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/EndpointGenerator.php:647
PHP  14. Jane\OpenApi\Generator\Psr7EndpointGenerator->Jane\OpenApi\Generator\{closure:/home/user/projects/janephp/vendor/jane-php/open-api/Generator/EndpointGenerator.php:629-647}() /home/user/projects/janephp/vendor/jane-php/json-schema-runtime/Reference.php:68
PHP  15. Symfony\Component\Serializer\Serializer->denormalize() /home/user/projects/janephp/vendor/jane-php/open-api/Generator/EndpointGenerator.php:631
PHP  16. Jane\OpenApi\Normalizer\BodyParameterNormalizer->denormalize() /home/user/projects/janephp/vendor/symfony/serializer/Serializer.php:191
PHP  17. Symfony\Component\Serializer\Serializer->denormalize() /home/user/projects/janephp/vendor/jane-php/open-api/Normalizer/BodyParameterNormalizer.php:64
PHP  18. Jane\OpenApi\Normalizer\SchemaNormalizer->denormalize() /home/user/projects/janephp/vendor/symfony/serializer/Serializer.php:191
PHP Fatal error:  Uncaught TypeError: Argument 2 passed to Jane\JsonSchemaRuntime\Reference::__construct() must be of the type string, null given, called in /home/user/projects/janephp/vendor/jane-php/open-api/Normalizer/SchemaNormalizer.php on line 43 and defined in /home/user/projects/janephp/vendor/jane-php/json-schema-runtime/Reference.php:28
Stack trace:
#0 /home/user/projects/janephp/vendor/jane-php/open-api/Normalizer/SchemaNormalizer.php(43): Jane\JsonSchemaRuntime\Reference->__construct('#/definitions/S...', NULL)
#1 /home/user/projects/janephp/vendor/symfony/serializer/Serializer.php(191): Jane\OpenApi\Normalizer\SchemaNormalizer->denormalize(Object(stdClass), 'Jane\\OpenApi\\Mo...', 'json', Array)
#2 /home/user/projects/janephp/vendor/jane-php/open-api/Normalizer/BodyParameterNormalizer.php(64): Symfony\Component\Serializer\Serializer->denormalize(Object(stdClass), 'Jane\\OpenApi\\Mo...', 'jso in /home/user/projects/janephp/vendor/jane-php/json-schema-runtime/Reference.php on line 28

If necessary I can provide the swagger file on request, but it looks more like a general issue to me (missing validation if $context['document-origin'] is present).

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 20 (9 by maintainers)

Most upvoted comments

@Korbeil Funny to see i’m never being mentioned in the blogpost while i’ve contributed to it for sure. Anyways glad to see there is a huge performance increase. and that we all can profit form it.

Yes, that’s because of some recent PRs, you can see more details on last release blog post here: https://jolicode.com/blog/jane-v5-3-performances-authentication-openapi-2.

By the way, this issue is solved, if you have issue not related to first post, please open a new issue. I will close this one.

@Niehztog I moved a bit forward for your issue. Your file is no longuer blocked while generating and takes only ~20min now. But, when generating, some Normalizer, our Naming class output related Normalizer file name and this occur: image

I have to see how I can shorten this filename 😄

Here’s a screenshot of the debugger when it crashes image