From 4878795dd5460c78393b86a0d534c5ecad1326ab Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 8 Jan 2019 16:40:51 +0800 Subject: [PATCH 1/2] better support for composed schema --- .../openapitools/codegen/DefaultCodegen.java | 17 ++++++++++------- .../codegen/languages/AbstractJavaCodegen.java | 6 ++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index a56134e5070a..875bcf8f1d9f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1841,7 +1841,7 @@ private CodegenDiscriminator createDiscriminator(String schemaName, Schema .map(s -> ModelUtils.getSimpleRef(s.get$ref())) .collect(Collectors.toSet()); if (parentSchemas.contains(schemaName)) { - discriminator.getMappedModels().add(new MappedModel(childName, childName)); + discriminator.getMappedModels().add(new MappedModel(childName, toModelName(childName))); } } }); @@ -1864,18 +1864,21 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc protected void addProperties(Map properties, List required, Schema schema, Map allSchemas) { if (schema instanceof ComposedSchema) { - throw new RuntimeException("Please report the issue: Cannot process Composed Schema in addProperties: " + schema); - /* ComposedSchema composedSchema = (ComposedSchema) schema; - if (composedSchema.getAllOf() == null) { - return; - } for (Schema component : composedSchema.getAllOf()) { addProperties(properties, required, component, allSchemas); } + + if (composedSchema.getOneOf() != null) { + throw new RuntimeException("Please report the issue: Cannot process oneOf (Composed Scheme) in addProperties: " + schema); + } + + if (composedSchema.getAnyOf() != null) { + throw new RuntimeException("Please report the issue: Cannot process anyOf (Composed Schema) in addProperties: " + schema); + } + return; - */ } Schema unaliasSchema = ModelUtils.unaliasSchema(globalSchemas, schema); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index c5f32a6c777c..16c2bb0611fe 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -117,6 +117,8 @@ public AbstractJavaCodegen() { setReservedWordsLowerCase( Arrays.asList( + // special words + "object", // used as internal variables, can collide with parameter names "localVarPath", "localVarQueryParams", "localVarCollectionQueryParams", "localVarHeaderParams", "localVarFormParams", "localVarPostBody", @@ -629,6 +631,10 @@ public String toVarName(String name) { // pet_id => petId name = camelize(name, true); + /*if ("type".equals(name.toLowerCase(Locale.ROOT))) { // to avoid "getType", which is not allowed to override + return "theType"; // type => theType + }*/ + // for reserved word or word starting with number, append _ if (isReservedWord(name) || name.matches("^\\d.*")) { name = escapeReservedWord(name); From b7f8d134f6374f339ab9184de42c8c22f0e774fc Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 8 Jan 2019 16:44:53 +0800 Subject: [PATCH 2/2] remove commented code --- .../openapitools/codegen/languages/AbstractJavaCodegen.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 16c2bb0611fe..4830939b6817 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -631,10 +631,6 @@ public String toVarName(String name) { // pet_id => petId name = camelize(name, true); - /*if ("type".equals(name.toLowerCase(Locale.ROOT))) { // to avoid "getType", which is not allowed to override - return "theType"; // type => theType - }*/ - // for reserved word or word starting with number, append _ if (isReservedWord(name) || name.matches("^\\d.*")) { name = escapeReservedWord(name);