swagger-api / swagger-codegen

swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.
http://swagger.io
Apache License 2.0
16.94k stars 6.03k forks source link

CXSVC - Errors while generating a client with either swagger-codegen-cli 2.2.1 or editor.swagger.io #4814

Open nandaccio opened 7 years ago

nandaccio commented 7 years ago
Description

I'm unable to generate a client for http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json

Swagger-codegen version

Both online version ( http://editor.swagger.io/#/) and swagger-codegen-cli 2.2.1

Swagger declaration file content or url

Swagger declaration url: http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json

The online swagger validator has no issues with that declaration:

http://online.swagger.io/validator/debug?url=http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json

and

http://online.swagger.io/validator?url=http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json

Command line used for generation

java -jar swagger-codegen-cli-2.2.1.jar generate -i http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json -l csharp

NOTE: tested also with http://editor.swagger.io/#/ , same issues

Output:

[main] INFO io.swagger.codegen.languages.CSharpClientCodegen - Generating code for .NET Framework v4.5 Exception in thread "main" java.lang.RuntimeException: Could not process model 'analyticsReportResults'.Please make sure that your schema is correct! at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:297) at io.swagger.codegen.cmd.Generate.run(Generate.java:223) at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:36) Caused by: java.lang.NullPointerException at io.swagger.codegen.languages.AbstractCSharpCodegen.getSwaggerType(AbstractCSharpCodegen.java:509) at io.swagger.codegen.DefaultCodegen.getTypeDeclaration(DefaultCodegen.java:1119) at io.swagger.codegen.languages.AbstractCSharpCodegen.getTypeDeclaration(AbstractCSharpCodegen.java:532) at io.swagger.codegen.languages.AbstractCSharpCodegen.getTypeDeclaration(AbstractCSharpCodegen.java:525) at io.swagger.codegen.languages.AbstractCSharpCodegen.getTypeDeclaration(AbstractCSharpCodegen.java:525) at io.swagger.codegen.DefaultCodegen.fromProperty(DefaultCodegen.java:1572) at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2738) at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2709) at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2695) at io.swagger.codegen.DefaultCodegen.fromModel(DefaultCodegen.java:1284) at io.swagger.codegen.languages.CSharpClientCodegen.fromModel(CSharpClientCodegen.java:313) at io.swagger.codegen.DefaultGenerator.processModels(DefaultGenerator.java:875) at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:290) ... 2 more

mminns commented 7 years ago

I believe the error is here: https://github.com/swagger-api/swagger-codegen/blob/b02d505ad9322812af5194fcb1fd49a5a51c69a1/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java#L353

the code currently uses the model name to try and find a definition for parent models, but the definitions use the object names from the swagger JSON.

I have a fix I'm trialling here

https://github.com/mminns/swagger-codegen/commit/36f4fe64dc30ce4296a89769418308fa47aa5ee0

This works for the swagger file I'm testing with.

nandaccio commented 7 years ago

Does the fix work with http://docs.oracle.com/cloud/latest/servicecs_gs/CXSVC/swagger.json ?