From b4f2bf6f4cecfc12f40c9cfcf1785b0b3c0b470c Mon Sep 17 00:00:00 2001 From: Zheng Li Date: Wed, 22 Nov 2017 14:17:32 -0800 Subject: [PATCH] [Python]Resolve ref object before other primitive types for model This change allows ref file to be named as primitive data types like array, and will be resolved correctly. Fix #7030 --- .../codegen/languages/PythonClientCodegen.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java index 0954957f19f..2ff820f4f91 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java @@ -356,7 +356,22 @@ public String modelTestFileFolder() { @Override public String getTypeDeclaration(Property p) { - if (p instanceof ArrayProperty) { + if (p instanceof RefProperty) { + String datatype; + try { + RefProperty r = (RefProperty) p; + datatype = r.get$ref(); + if (datatype.indexOf("#/definitions/") == 0) { + datatype = datatype.substring("#/definitions/".length()); + return toModelName(datatype); + } + } catch (Exception e) { + LOGGER.warn("Error obtaining the datatype from RefProperty:" + p + ". Datatype default to Object"); + datatype = "Object"; + LOGGER.error(e.getMessage(), e); + return toModelName(datatype); + } + } else if (p instanceof ArrayProperty) { ArrayProperty ap = (ArrayProperty) p; Property inner = ap.getItems(); return getSwaggerType(p) + "[" + getTypeDeclaration(inner) + "]";