From 481ba3495460136a6fdd3d964f9934a5b7d3a021 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Fri, 11 Jan 2019 22:40:01 -0500 Subject: [PATCH 1/5] Clean up file output handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This attempts to normalize all generators to use OS agnostic File.separator. It also cleans up some areas in code where we replace "." in full file output path with File.separator. We should only be modifying directory names we own, and should avoid modifying anything that can be provided by a user. It would probably be better to use Paths.get(…).toString() in all cases. --- .../codegen/languages/AbstractJavaCodegen.java | 8 ++++---- .../codegen/languages/AbstractScalaCodegen.java | 4 ++-- .../languages/AbstractTypeScriptClientCodegen.java | 4 ++-- .../org/openapitools/codegen/languages/AdaCodegen.java | 4 ++-- .../openapitools/codegen/languages/AdaServerCodegen.java | 4 ++-- .../codegen/languages/AndroidClientCodegen.java | 8 ++++---- .../codegen/languages/CSharpDotNet2ClientCodegen.java | 4 ++-- .../openapitools/codegen/languages/DartClientCodegen.java | 4 ++-- .../openapitools/codegen/languages/ElmClientCodegen.java | 4 ++-- .../codegen/languages/FlashClientCodegen.java | 6 +++--- .../codegen/languages/JMeterClientCodegen.java | 4 ++-- .../languages/JavascriptClosureAngularClientCodegen.java | 4 ++-- .../codegen/languages/ScalaGatlingCodegen.java | 4 ++-- 13 files changed, 31 insertions(+), 31 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 7d20b31e8ff1..0c58f48196c6 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 @@ -536,22 +536,22 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return (outputFolder + "/" + sourceFolder + "/" + apiPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + "/" + apiPackage()).replace('.', File.separatorChar); } @Override public String apiTestFileFolder() { - return (outputFolder + "/" + testFolder + "/" + apiPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (testFolder + "/" + apiPackage()).replace('.', File.separatorChar); } @Override public String modelTestFileFolder() { - return (outputFolder + "/" + testFolder + "/" + modelPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (testFolder + "/" + modelPackage()).replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return (outputFolder + "/" + sourceFolder + "/" + modelPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + "/" + modelPackage()).replace('.', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 1e5f9e1867b5..19a45238713c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -174,12 +174,12 @@ public String escape(String text) { @Override public String apiFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 3e0db4a7c7ca..e6082564364c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -153,12 +153,12 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + modelPackage().replace('.', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaCodegen.java index 3a0731106f31..0099e7909871 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaCodegen.java @@ -121,11 +121,11 @@ public void execute(Template.Fragment fragment, Writer writer) throws IOExceptio @Override public String apiFileFolder() { - return outputFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + "/model/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + "model" + File.separator + modelPackage().replace('.', File.separatorChar); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaServerCodegen.java index 1e2730951813..0ee5bb6c43e1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaServerCodegen.java @@ -123,11 +123,11 @@ public void execute(Template.Fragment fragment, Writer writer) throws IOExceptio @Override public String apiFileFolder() { - return outputFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + "/model/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + "model" + File.separator + modelPackage().replace('.', File.separatorChar); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java index 73e359075d7c..88640f7de77c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java @@ -156,22 +156,22 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } @Override public String apiDocFileFolder() { - return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java index 3995cb209960..54f43579dd98 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java @@ -130,12 +130,12 @@ public String modelFileFolder() { @Override public String apiDocFileFolder() { - return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 4ef3879a000a..cf488829506d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -246,12 +246,12 @@ public String modelFileFolder() { @Override public String apiDocFileFolder() { - return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index 13e811fa1bef..51467c8f8e10 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -314,12 +314,12 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + "/src/Request/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + ("/src/Request/" + apiPackage().replace('.', File.separatorChar)).replace("/", File.separator); } @Override public String modelFileFolder() { - return outputFolder + "/src/Data/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + ("/src/Data/" + modelPackage().replace('.', File.separatorChar)).replace("/", File.separator); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java index a91571f77cf1..750353accefd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java @@ -131,7 +131,7 @@ public void processOpts() { //modelPackage = invokerPackage + File.separatorChar + "client" + File.separatorChar + "model"; //apiPackage = invokerPackage + File.separatorChar + "client" + File.separatorChar + "api"; - final String invokerFolder = (sourceFolder + File.separator + "src/" + invokerPackage + File.separator).replace(".", File.separator).replace('.', File.separatorChar); + final String invokerFolder = (sourceFolder + File.separator + "src" + File.separator + invokerPackage + File.separator).replace(".", File.separator).replace('.', File.separatorChar); supportingFiles.add(new SupportingFile("ApiInvoker.as", invokerFolder + "common", "ApiInvoker.as")); supportingFiles.add(new SupportingFile("ApiUrlHelper.as", invokerFolder + "common", "ApiUrlHelper.as")); @@ -193,13 +193,13 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return (outputFolder + File.separatorChar + sourceFolder + File.separatorChar + "src/" + return outputFolder + File.separatorChar + sourceFolder + File.separatorChar + ("src/" + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String modelFileFolder() { - return (outputFolder + File.separatorChar + sourceFolder + File.separatorChar + "src/" + return outputFolder + File.separatorChar + sourceFolder + File.separatorChar + ("src/" + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java index 912ad43a7e4c..fdb2a1979712 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java @@ -149,7 +149,7 @@ public String escapeReservedWord(String name) { */ @Override public String modelFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } /** @@ -158,7 +158,7 @@ public String modelFileFolder() { */ @Override public String apiFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } /** diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index 250e2ed344f8..efab56fc8d6d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -167,11 +167,11 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); } public String modelFileFolder() { - return outputFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + modelPackage().replace('.', File.separatorChar); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java index bf7b0beccf94..765b291e37f1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java @@ -214,7 +214,7 @@ public String escapeReservedWord(String name) { * instantiated */ public String modelFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); } /** @@ -223,7 +223,7 @@ public String modelFileFolder() { */ @Override public String apiFileFolder() { - return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); } /** From e97527d7fa26777619ba757668c66fe3a87998e0 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Fri, 11 Jan 2019 22:48:59 -0500 Subject: [PATCH 2/5] Fix missed path separators in java codegen --- .../codegen/languages/AbstractJavaCodegen.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 0c58f48196c6..0d2ecb78dca7 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 @@ -536,32 +536,32 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + File.separator + (sourceFolder + "/" + apiPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + File.separator + apiPackage()).replace('.', File.separatorChar); } @Override public String apiTestFileFolder() { - return outputFolder + File.separator + (testFolder + "/" + apiPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (testFolder + File.separator + apiPackage()).replace('.', File.separatorChar); } @Override public String modelTestFileFolder() { - return outputFolder + File.separator + (testFolder + "/" + modelPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (testFolder + File.separator + modelPackage()).replace('.', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + File.separator + (sourceFolder + "/" + modelPackage()).replace('.', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + File.separator + modelPackage()).replace('.', File.separatorChar); } @Override public String apiDocFileFolder() { - return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); + return (outputFolder + File.separator + apiDocPath).replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); + return (outputFolder + File.separator + modelDocPath).replace('/', File.separatorChar); } @Override From 27d93a9c85c14d130540da48778b03d5a9460bb5 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 12 Jan 2019 07:50:26 -0500 Subject: [PATCH 3/5] Adjust Java codegen path replacements --- .../codegen/languages/AbstractJavaCodegen.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 336333b4c3e7..3b222bfbd715 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 @@ -536,32 +536,32 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + File.separator + (sourceFolder + File.separator + apiPackage()).replace('.', File.separatorChar).replace('/', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String apiTestFileFolder() { - return outputFolder + File.separator + (testFolder + File.separator + apiPackage()).replace('.', File.separatorChar).replace('/', File.separatorChar); + return outputFolder + File.separator + (testFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String modelTestFileFolder() { - return outputFolder + File.separator + (testFolder + File.separator + modelPackage()).replace('.', File.separatorChar).replace('/', File.separatorChar); + return outputFolder + File.separator + (testFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + File.separator + (sourceFolder + File.separator + modelPackage()).replace('.', File.separatorChar).replace('/', File.separatorChar); + return outputFolder + File.separator + (sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String apiDocFileFolder() { - return (outputFolder + File.separator + apiDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return (outputFolder + File.separator + modelDocPath).replace('/', File.separatorChar); + return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); } @Override From 32856935afb8759ae3af9cf733d86dbab893df47 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 12 Jan 2019 08:35:47 -0500 Subject: [PATCH 4/5] Convert / in full path replacements, as / is forbidden in Windows, and noop elsewhere --- .../codegen/languages/AbstractJavaCodegen.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 3b222bfbd715..64dd04c8d94f 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 @@ -536,32 +536,32 @@ public String escapeReservedWord(String name) { @Override public String apiFileFolder() { - return outputFolder + File.separator + (sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); + return (outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String apiTestFileFolder() { - return outputFolder + File.separator + (testFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); + return (outputFolder + File.separator + testFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String modelTestFileFolder() { - return outputFolder + File.separator + (testFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); + return (outputFolder + File.separator + testFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String modelFileFolder() { - return outputFolder + File.separator + (sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); + return (outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar); } @Override public String apiDocFileFolder() { - return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); + return (outputFolder + File.separator + apiDocPath).replace('/', File.separatorChar); } @Override public String modelDocFileFolder() { - return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); + return (outputFolder + File.separator + modelDocPath).replace('/', File.separatorChar); } @Override From 113adda1bb521c594a725780fe0c3af409fa1ea0 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 12 Jan 2019 09:29:06 -0500 Subject: [PATCH 5/5] Use Paths.get where files are written, to better handle Windows path constraints --- .../main/java/org/openapitools/codegen/cmd/ConfigHelp.java | 3 ++- .../java/org/openapitools/codegen/AbstractGenerator.java | 5 ++++- .../main/java/org/openapitools/codegen/DefaultGenerator.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java index de79af407f4e..4e51cc7c76ef 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java @@ -28,6 +28,7 @@ import java.io.*; import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.apache.commons.lang3.StringUtils.isNotEmpty; @@ -65,7 +66,7 @@ public void run() { generatePlainTextHelp(sb, config); if (!isEmpty(outputFile)) { - File out = new File(outputFile); + File out = Paths.get(outputFile).toFile(); //noinspection ResultOfMethodCallIgnored out.mkdirs(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/AbstractGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/AbstractGenerator.java index 88ee01f77e81..176cc3480a4b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/AbstractGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/AbstractGenerator.java @@ -27,6 +27,7 @@ import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; +import java.nio.file.Paths; import java.util.Scanner; import java.util.regex.Pattern; @@ -40,7 +41,9 @@ public abstract class AbstractGenerator { @SuppressWarnings("static-method") public File writeToFile(String filename, String contents) throws IOException { LOGGER.info("writing file " + filename); - File output = new File(filename); + + // Use Paths.get here to normalize path (for Windows file separator, space escaping on Linux/Mac, etc) + File output = Paths.get(filename).toFile(); if (output.getParent() != null && !new File(output.getParent()).exists()) { File parent = new File(output.getParent()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 935d15050da2..649227fdf338 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -800,7 +800,7 @@ public Reader getTemplate(String name) { } protected File writeInputStreamToFile(String filename, InputStream in, String templateFile) throws FileNotFoundException, IOException { - File outputFile = new File(filename); + File outputFile = java.nio.file.Paths.get(filename).toFile(); if (in != null) { OutputStream out = new FileOutputStream(outputFile, false); LOGGER.info("writing file " + outputFile);