From 51071211d3857d59b69961f3dab6a5b302a8f9ea Mon Sep 17 00:00:00 2001 From: jpfinne Date: Sat, 1 Jun 2024 10:54:47 +0200 Subject: [PATCH] fix NPE when no CODEGEN_CONFIG in additionalProperties --- .../languages/AsciidocDocumentationCodegen.java | 10 ++++++---- .../codegen/templating/MustacheEngineAdapter.java | 10 ++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java index af1e53ab7abb..bd25e3a6ced6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java @@ -53,6 +53,8 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code public static final String SKIP_EXAMPLES_FLAG = "skipExamples"; public static final String USE_METHOD_AND_PATH_FLAG = "useMethodAndPath"; public static final String USE_TABLE_TITLES_FLAG = "useTableTitles"; + private String specDir; + private String snippetDir; /** * Lambda emitting an asciidoc "include::filename.adoc[]" if file is found in @@ -193,11 +195,11 @@ public String getHelp() { } public String getSpecDir() { - return additionalProperties.get("specDir").toString(); + return specDir; } public String getSnippetDir() { - return additionalProperties.get("snippetDir").toString(); + return snippetDir; } public AsciidocDocumentationCodegen() { @@ -325,7 +327,7 @@ public void setUseTableTitles(boolean useTableTitles) { public void processOpts() { super.processOpts(); - String specDir = String.valueOf(this.additionalProperties.get(SPEC_DIR)); + this.specDir = String.valueOf(this.additionalProperties.get(SPEC_DIR)); if (!Files.isDirectory(Paths.get(specDir))) { LOGGER.warn("base part for include markup lambda not found: {} as {}", specDir, Paths.get(specDir).toAbsolutePath()); } @@ -333,7 +335,7 @@ public void processOpts() { this.includeSpecMarkupLambda = new IncludeMarkupLambda(SPEC_DIR,specDir); additionalProperties.put("specinclude", this.includeSpecMarkupLambda); - String snippetDir = String.valueOf(this.additionalProperties.get(SNIPPET_DIR)); + this.snippetDir = String.valueOf(this.additionalProperties.get(SNIPPET_DIR)); if (!Files.isDirectory(Paths.get(snippetDir))) { LOGGER.warn("base part for include markup lambda not found: {} as {}", snippetDir, Paths.get(snippetDir).toAbsolutePath()); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java index 9bf65b6a18a2..cc880bd9edd0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java @@ -18,6 +18,7 @@ import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; +import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.api.TemplatingEngineAdapter; import org.openapitools.codegen.api.TemplatingExecutor; import org.slf4j.Logger; @@ -64,8 +65,13 @@ public String compileTemplate(TemplatingExecutor executor, Map b .compile(executor.getFullTemplateContents(templateFile)); StringWriter out = new StringWriter(); - Object parent = bundle.get("CONFIG"); - tmpl.execute(bundle,parent, out); + Object parent = bundle.get(CodegenConstants.CONFIG); + if (parent == null) { + LOGGER.warn("{} not found. super.processOpts needs to be called in processOpts()", CodegenConstants.CONFIG); + // avoid NPE + parent = new Object(); + } + tmpl.execute(bundle, parent, out); return out.toString(); }