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 595df4ebd76..c119400dbbc 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 @@ -27,6 +27,7 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; import io.swagger.v3.parser.util.SchemaTypeUtil; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CliOption; @@ -212,6 +213,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code public void processOpts() { super.processOpts(); + if (StringUtils.isEmpty(System.getenv("JAVA_POST_PROCESS_FILE"))) { + LOGGER.info("Environment variable JAVA_POST_PROCESS_FILE not defined so the Java code may not be properly formatted. To define it, try 'export JAVA_POST_PROCESS_FILE=\"/usr/local/bin/clang-format -i\"' (Linux/Mac)"); + } + if (additionalProperties.containsKey(SUPPORT_JAVA6)) { this.setSupportJava6(Boolean.valueOf(additionalProperties.get(SUPPORT_JAVA6).toString())); } @@ -226,7 +231,6 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code this.setBooleanGetterPrefix(additionalProperties.get(BOOLEAN_GETTER_PREFIX).toString()); } additionalProperties.put(BOOLEAN_GETTER_PREFIX, booleanGetterPrefix); - if (additionalProperties.containsKey(USE_NULL_FOR_UNKNOWN_ENUM_VALUE)) { this.setUseNullForUnknownEnumValue(Boolean.valueOf(additionalProperties.get(USE_NULL_FOR_UNKNOWN_ENUM_VALUE).toString())); } @@ -1382,6 +1386,35 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code return tag; } + @Override + public void postProcessFile(File file, String fileType) { + if (file == null) { + return; + } + + String javaPostProcessFile = System.getenv("JAVA_POST_PROCESS_FILE"); + if (StringUtils.isEmpty(javaPostProcessFile)) { + return; // skip if JAVA_POST_PROCESS_FILE env variable is not defined + } + + // only process files with hs extension + if ("java".equals(FilenameUtils.getExtension(file.toString()))) { + String command = javaPostProcessFile + " " + file.toString(); + try { + Process p = Runtime.getRuntime().exec(command); + p.waitFor(); + int exitValue = p.exitValue(); + if (exitValue != 0) { + LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); + } else { + LOGGER.info("Successfully executed: " + command); + } + } catch (Exception e) { + LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); + } + } + } + public void setParentGroupId(final String parentGroupId) { this.parentGroupId = parentGroupId; }