-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
With this api-doc (generated using the Basic Error Controller of the Swagger Spring-MVC project at https://github.com/springfox/springfox with com.mangofactory:swagger-springmvc-1.0.2)
SwaggerCompatConverter (Swagger-Codegen 2.1.2-M1) will throw an NPE:
com.wordnik.swagger.codegen.Codegen -i http://localhost:8080/api-docs -l java
java.lang.NullPointerException
at io.swagger.parser.SwaggerCompatConverter.convert(SwaggerCompatConverter.java:455)
at io.swagger.parser.SwaggerCompatConverter.read(SwaggerCompatConverter.java:111)
at io.swagger.parser.SwaggerParser.read(SwaggerParser.java:34)
at com.wordnik.swagger.codegen.Codegen.main(Codegen.java:93)
Full API-doc:
{
"apiVersion": "1.0",
"apis": [
{
"description": "error",
"operations": [
{
"method": "GET",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "HEAD",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "POST",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "PUT",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "PATCH",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "DELETE",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "OPTIONS",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}, {
"method": "TRACE",
"summary": "error",
"notes": "error",
"nickname": "error",
"produces": ["*/*"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "Map«string,object»"
}
],
"deprecated": "false",
"type": "Map«string,object»"
}
],
"path": "/error"
}, {
"description": "errorHtml",
"operations": [
{
"method": "GET",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "HEAD",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "POST",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "PUT",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "PATCH",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "DELETE",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "OPTIONS",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}, {
"method": "TRACE",
"summary": "errorHtml",
"notes": "errorHtml",
"nickname": "errorHtml",
"produces": ["text/html"],
"consumes": ["application/json"],
"parameters": [],
"responseMessages": [
{
"code": 200,
"message": null,
"responseModel": "ModelAndView"
}
],
"deprecated": "false",
"type": "ModelAndView"
}
],
"path": "/error"
}
],
"basePath": "/",
"consumes": ["application/json"],
"models": {
"View": {
"description": "",
"id": "View",
"properties": {
"contentType": {
"required": false,
"type": "string"
}
}
},
"ModelAndView": {
"description": "",
"id": "ModelAndView",
"properties": {
"view": {
"required": false,
"type": "View"
},
"model": {
"required": false,
"type": "object"
},
"empty": {
"required": false,
"type": "boolean"
},
"modelMap": {
"required": false,
"type": "ModelMap"
},
"viewName": {
"required": false,
"type": "string"
},
"reference": {
"required": false,
"type": "boolean"
}
}
},
"ModelMap": {
"description": "",
"id": "ModelMap",
"properties": {
"empty": {
"required": false,
"type": "boolean"
}
}
}
},
"produces": ["*/*", "text/html"],
"resourcePath": "/error",
"swaggerVersion": "1.2"
}
I tried to replace SwaggerCompatConverter, but right now it doesn't seem to be intended to replace the SwaggerCompatConverter easily, as it is parsed via "SwaggerParserExtension" and there is no reference to the class SwaggerCompatConverter in the whole swagger-codegen-project-2.1.2-M1 (to allow it to be edited):
SwaggerParser:
for(SwaggerParserExtension extension : parserExtensions) {
try{
output = extension.read(location, auths);
if(output != null) {
return output;
}
}