diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml
index e417dad64cd..b6cbfe3b9db 100644
--- a/modules/openapi-generator/pom.xml
+++ b/modules/openapi-generator/pom.xml
@@ -268,6 +268,12 @@
test
+
+ com.github.javaparser
+ javaparser-core
+ 3.14.11
+ test
+
org.reflections
reflections
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java
index b85c3cdd405..6c1d9a12b1f 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java
@@ -1,8 +1,12 @@
package org.openapitools.codegen;
-import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.fail;
import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertFalse;
+import com.github.javaparser.ParseProblemException;
+import com.github.javaparser.StaticJavaParser;
+import com.github.javaparser.ast.CompilationUnit;
import io.swagger.parser.OpenAPIParser;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
@@ -66,7 +70,7 @@ public class TestUtils {
File file = new File(root, filename);
String absoluteFilename = file.getAbsolutePath().replace("\\", "/");
if (!generatedFiles.containsKey(absoluteFilename)) {
- Assert.fail("Could not find '" + absoluteFilename + "' file in list:\n" +
+ fail("Could not find '" + absoluteFilename + "' file in list:\n" +
generatedFiles.keySet().stream().sorted().collect(Collectors.joining(",\n")));
}
assertTrue(generatedFiles.containsKey(absoluteFilename), "File '" + absoluteFilename + "' was not found in the list of generated files");
@@ -76,9 +80,28 @@ public class TestUtils {
File file = new File(root, filename);
String absoluteFilename = file.getAbsolutePath().replace("\\", "/");
if (generatedFiles.containsKey(absoluteFilename)) {
- Assert.fail("File '" + absoluteFilename + "' exists in file in list:\n" +
+ fail("File '" + absoluteFilename + "' exists in file in list:\n" +
generatedFiles.keySet().stream().sorted().collect(Collectors.joining(",\n")));
}
assertFalse(generatedFiles.containsKey(absoluteFilename), "File '" + absoluteFilename + "' was found in the list of generated files");
}
+
+ public static void validateJavaSourceFiles(Map fileMap) {
+ fileMap.forEach( (fileName, fileContents) -> {
+ if (fileName.endsWith(".java")) {
+ assertValidJavaSourceCode(fileContents, fileName);
+ }
+ }
+ );
+ }
+
+ public static void assertValidJavaSourceCode(String javaSourceCode, String filename) {
+ try {
+ CompilationUnit compilation = StaticJavaParser.parse(javaSourceCode);
+ assertTrue(compilation.getTypes().size() > 0, "File: " + filename);
+ }
+ catch (ParseProblemException ex) {
+ fail("Java parse problem: " + filename, ex);
+ }
+ }
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
index e26208de14c..02e0df57c47 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
@@ -17,6 +17,7 @@
package org.openapitools.codegen.java;
+import static org.openapitools.codegen.TestUtils.*;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
@@ -318,6 +319,8 @@ public class JavaClientCodegenTest {
TestUtils.ensureContainsFile(generatedFiles, output, "src/main/java/xyz/abcdef/StringUtil.java");
TestUtils.ensureContainsFile(generatedFiles, output, "src/test/java/xyz/abcdef/api/DefaultApiTest.java");
+ validateJavaSourceFiles(generatedFiles);
+
String defaultApiFilename = new File(output, "src/main/java/xyz/abcdef/api/DefaultApi.java").getAbsolutePath().replace("\\", "/");
String defaultApiConent = generatedFiles.get(defaultApiFilename);
assertTrue(defaultApiConent.contains("public class DefaultApi"));