Fix NPE with cpp-restsdk client generator (#1477)

* fix_cpprest_npe

* fix_code_format
This commit is contained in:
William Cheng 2018-11-19 11:05:44 +08:00 committed by GitHub
parent 7f8ff35245
commit 0e693cd9a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -285,8 +285,8 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
for(String hdr : op.imports) { for (String hdr : op.imports) {
if(importMapping.containsKey(hdr)) { if (importMapping.containsKey(hdr)) {
continue; continue;
} }
operations.put("hasModelImport", true); operations.put("hasModelImport", true);
@ -295,7 +295,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
} }
return objs; return objs;
} }
protected boolean isFileSchema(CodegenProperty property) { protected boolean isFileSchema(CodegenProperty property) {
return property.baseType.equals("HttpContent"); return property.baseType.equals("HttpContent");
} }
@ -411,7 +411,6 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
@Override @Override
public Map<String, Object> postProcessAllModels(final Map<String, Object> models) { public Map<String, Object> postProcessAllModels(final Map<String, Object> models) {
final Map<String, Object> processed = super.postProcessAllModels(models); final Map<String, Object> processed = super.postProcessAllModels(models);
postProcessParentModels(models); postProcessParentModels(models);
return processed; return processed;
@ -432,13 +431,18 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
*/ */
private void processParentPropertiesInChildModel(final CodegenModel parent, final CodegenModel child) { private void processParentPropertiesInChildModel(final CodegenModel parent, final CodegenModel child) {
final Map<String, CodegenProperty> childPropertiesByName = new HashMap<>(child.vars.size()); final Map<String, CodegenProperty> childPropertiesByName = new HashMap<>(child.vars.size());
for (final CodegenProperty childSchema : child.vars) { if (child != null && child.vars != null && !child.vars.isEmpty()) {
childPropertiesByName.put(childSchema.name, childSchema); 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 (parent != null && parent.vars != null && !parent.vars.isEmpty()) {
if (duplicatedByParent != null) { for (final CodegenProperty parentSchema : parent.vars) {
duplicatedByParent.isInherited = true; final CodegenProperty duplicatedByParent = childPropertiesByName.get(parentSchema.name);
if (duplicatedByParent != null) {
duplicatedByParent.isInherited = true;
}
} }
} }
} }