From 0e693cd9a84afbe5bd864ad830610e86a15f6982 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 19 Nov 2018 11:05:44 +0800 Subject: [PATCH] Fix NPE with `cpp-restsdk` client generator (#1477) * fix_cpprest_npe * fix_code_format --- .../languages/CppRestSdkClientCodegen.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index 5a8424838ba..7e119662ded 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -285,8 +285,8 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { - for(String hdr : op.imports) { - if(importMapping.containsKey(hdr)) { + for (String hdr : op.imports) { + if (importMapping.containsKey(hdr)) { continue; } operations.put("hasModelImport", true); @@ -295,7 +295,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { } return objs; } - + protected boolean isFileSchema(CodegenProperty property) { return property.baseType.equals("HttpContent"); } @@ -411,7 +411,6 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { @Override public Map postProcessAllModels(final Map models) { - final Map processed = super.postProcessAllModels(models); postProcessParentModels(models); return processed; @@ -432,13 +431,18 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { */ private void processParentPropertiesInChildModel(final CodegenModel parent, final CodegenModel child) { final Map childPropertiesByName = new HashMap<>(child.vars.size()); - for (final CodegenProperty childSchema : child.vars) { - childPropertiesByName.put(childSchema.name, childSchema); + if (child != null && child.vars != null && !child.vars.isEmpty()) { + for (final CodegenProperty childSchema : child.vars) { + childPropertiesByName.put(childSchema.name, childSchema); + } } - for (final CodegenProperty parentSchema : parent.vars) { - final CodegenProperty duplicatedByParent = childPropertiesByName.get(parentSchema.name); - if (duplicatedByParent != null) { - duplicatedByParent.isInherited = true; + + if (parent != null && parent.vars != null && !parent.vars.isEmpty()) { + for (final CodegenProperty parentSchema : parent.vars) { + final CodegenProperty duplicatedByParent = childPropertiesByName.get(parentSchema.name); + if (duplicatedByParent != null) { + duplicatedByParent.isInherited = true; + } } } }