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 60c91bf9c446..dcdad60d1816 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 @@ -675,7 +675,6 @@ private boolean codegenPropertyIsNew(CodegenModel model, CodegenProperty propert */ protected Map getModelNameToSchemaCache() { if (modelNameToSchemaCache == null) { - // Create a cache to efficiently lookup schema based on model name. Map m = new HashMap<>(); ModelUtils.getSchemas(openAPI).forEach((key, schema) -> m.put(toModelName(key), schema)); modelNameToSchemaCache = Collections.unmodifiableMap(m); @@ -1060,6 +1059,7 @@ public void setOpenAPI(OpenAPI openAPI) { once(LOGGER).warn(UNSUPPORTED_V310_SPEC_MSG); } this.openAPI = openAPI; + this.modelNameToSchemaCache = null; // Set global settings such that helper functions in ModelUtils can lookup the value // of the CLI option. ModelUtils.setDisallowAdditionalPropertiesIfNotPresent(getDisallowAdditionalPropertiesIfNotPresent()); @@ -7166,18 +7166,15 @@ public void updateCodegenPropertyEnum(CodegenProperty var) { } String varDataType = var.mostInnerItems != null ? var.mostInnerItems.dataType : var.dataType; - Optional referencedSchema = ModelUtils.getSchemas(openAPI).entrySet().stream() - .filter(entry -> Objects.equals(varDataType, toModelName(entry.getKey()))) - .map(Map.Entry::getValue) - .findFirst(); - String dataType = (referencedSchema.isPresent()) ? getTypeDeclaration(referencedSchema.get()) : varDataType; + Schema referencedSchema = getModelNameToSchemaCache().get(varDataType); + String dataType = referencedSchema != null ? getTypeDeclaration(referencedSchema) : varDataType; List enumVars = buildEnumVars(values, dataType); postProcessEnumVars(enumVars); // if "x-enum-varnames" or "x-enum-descriptions" defined, update varnames Map extensions = var.mostInnerItems != null ? var.mostInnerItems.getVendorExtensions() : var.getVendorExtensions(); - if (referencedSchema.isPresent()) { - extensions = referencedSchema.get().getExtensions(); + if (referencedSchema != null) { + extensions = referencedSchema.getExtensions(); } updateEnumVarsWithExtensions(enumVars, extensions, dataType); allowableValues.put(ENUM_VARS, enumVars);