Skip to content

Commit

Permalink
Merge pull request #187 from swagger-api/issue-178
Browse files Browse the repository at this point in the history
Issue 178
  • Loading branch information
HugoMario committed Sep 27, 2018
2 parents 77cc2f2 + 66c2179 commit 06a341e
Show file tree
Hide file tree
Showing 28 changed files with 189 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import io.swagger.codegen.v3.generators.handlebars.NotEmptyHelper;
import io.swagger.codegen.v3.generators.handlebars.StringUtilHelper;
import io.swagger.codegen.v3.templates.HandlebarTemplateEngine;
import io.swagger.codegen.v3.templates.MustacheTemplateEngine;
import io.swagger.codegen.v3.templates.TemplateEngine;
import io.swagger.codegen.v3.utils.ModelUtils;
import io.swagger.v3.core.util.Json;
Expand Down Expand Up @@ -150,6 +151,7 @@ public abstract class DefaultCodegenConfig implements CodegenConfig {
protected String gitUserId, gitRepoId, releaseNote;
protected String httpUserAgent;
protected Boolean hideGenerationTimestamp = true;
protected TemplateEngine templateEngine;
// How to encode special characters like $
// They are translated to words like "Dollar" and prefixed with '
// Then translated back during JSON encoding and decoding
Expand Down Expand Up @@ -229,6 +231,8 @@ public void processOpts() {
if (additionalProperties.containsKey(CodegenConstants.USE_OAS2)) {
this.setUseOas2(Boolean.valueOf(additionalProperties.get(CodegenConstants.USE_OAS2).toString()));
}

setTemplateEngine();
}

public Map<String, Object> postProcessAllModels(Map<String, Object> processedModels) {
Expand Down Expand Up @@ -3607,6 +3611,8 @@ public void setUseOas2(boolean useOas2) {
this.useOas2 = useOas2;
}

public abstract String getDefaultTemplateDir();

public boolean convertPropertyToBoolean(String propertyKey) {
boolean booleanValue = false;
if (additionalProperties.containsKey(propertyKey)) {
Expand Down Expand Up @@ -3651,6 +3657,28 @@ protected Parameter getParameterFromRef(String ref, OpenAPI openAPI) {
return parameterMap.get(parameterName);
}

protected void setTemplateEngine() {
String templateEngineKey = additionalProperties.get(CodegenConstants.TEMPLATE_ENGINE) != null ? additionalProperties.get(CodegenConstants.TEMPLATE_ENGINE).toString() : null;

if (templateEngineKey == null) {
templateEngine = new MustacheTemplateEngine(this);
} else {
if (CodegenConstants.HANDLEBARS_TEMPLATE_ENGINE.equalsIgnoreCase(templateEngineKey)) {
templateEngine = new HandlebarTemplateEngine(this);
} else {
templateEngine = new MustacheTemplateEngine(this);
}
}
}

protected String getTemplateDir() {
return new StringBuilder()
.append(templateEngine.getName())
.append("/")
.append(getDefaultTemplateDir())
.toString();
}

private void setOauth2Info(CodegenSecurity codegenSecurity, OAuthFlow flow) {
codegenSecurity.authorizationUrl = flow.getAuthorizationUrl();
codegenSecurity.tokenUrl = flow.getTokenUrl();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return "swagger-static";
}

@Override
public String getName() {
return "dynamic-html";
Expand All @@ -76,7 +81,7 @@ public String getHelp() {
public void processOpts() {
super.processOpts();

embeddedTemplateDir = templateDir = String.format("%s/swagger-static", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return "htmlDocs2";
}

@Override
public String getName() {
return "html2";
Expand Down Expand Up @@ -144,7 +149,7 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
public void processOpts() {
super.processOpts();

embeddedTemplateDir = templateDir = String.format("%s/htmlDocs2", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return "htmlDocs";
}

@Override
public String getName() {
return "html";
Expand Down Expand Up @@ -126,7 +131,7 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
public void processOpts() {
super.processOpts();

embeddedTemplateDir = templateDir = String.format("%s/htmlDocs", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/cxf", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

// clear model and api doc template as this codegen
Expand Down Expand Up @@ -161,4 +161,9 @@ public void setUseGenericResponse(boolean useGenericResponse) {
public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/cxf", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

apiTemplateFiles.put("apiServiceImpl.mustache", ".java");
Expand Down Expand Up @@ -297,4 +297,9 @@ public void setUseGenericResponse(boolean useGenericResponse) {
this.useGenericResponse = useGenericResponse;
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ public void processOpts() {
super.processOpts();
if (StringUtils.isBlank(templateDir)) {
String templateVersion = getTemplateVersion();
embeddedTemplateDir = templateDir = String.format("%s" + File.separator + "Java", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

if (additionalProperties.containsKey(USE_RX_JAVA) && additionalProperties.containsKey(USE_RX_JAVA2)) {
Expand Down Expand Up @@ -531,6 +531,11 @@ public String getArgumentsLocation() {
return "/arguments/java.yaml";
}

@Override
public String getDefaultTemplateDir() {
return "Java";
}

protected List<Map<String, Object>> modelInheritanceSupportInGson(List<?> allModels) {
Map<CodegenModel, List<CodegenModel>> byParent = new LinkedHashMap<>();
for (Object model : allModels) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/JavaInflector", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}
writeOptional(outputFolder, new SupportingFile("pom.mustache", "", "pom.xml"));
writeOptional(outputFolder, new SupportingFile("README.mustache", "", "README.md"));
Expand Down Expand Up @@ -269,4 +269,9 @@ public String toApiName(String name) {
public String getArgumentsLocation() {
return "/arguments/inflector.yaml";
}

@Override
public String getDefaultTemplateDir() {
return "JavaInflector";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public JavaJAXRSCXFCDIServerCodegen() {
cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations"));
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}

@Override
public String getName() {
return "jaxrs-cxf-cdi";
Expand All @@ -43,7 +48,7 @@ public void processOpts() {
// Set the template dir first, before super.processOpts(), otherwise it is going to
// be set to /spec location.
if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/cxf-cdi", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

super.processOpts();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/spec", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

modelTemplateFiles.put("model.mustache", ".java");
Expand Down Expand Up @@ -108,6 +108,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}

@Override
public String getName() {
return "jaxrs-spec";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME, DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

addTemplateFiles();
Expand Down Expand Up @@ -152,6 +152,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}

@Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
objs = super.postProcessModelsEnum(objs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/resteasy/eap", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

apiTemplateFiles.put("apiServiceImpl.mustache", ".java");
Expand Down Expand Up @@ -114,6 +114,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME + "/resteasy/eap";
}

@Override
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
String basePath = resourcePath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/" + JAXRS_TEMPLATE_DIRECTORY_NAME + "/resteasy", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

apiTemplateFiles.put("apiService.mustache", ".java");
Expand Down Expand Up @@ -105,6 +105,11 @@ public String getArgumentsLocation() {
return "";
}

@Override
public String getDefaultTemplateDir() {
return JAXRS_TEMPLATE_DIRECTORY_NAME;
}

@Override
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
String basePath = resourcePath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = "mustache" + File.separator + "JavaSpring";
embeddedTemplateDir = templateDir = getTemplateDir();
}

// clear model and api doc template as this codegen
Expand Down Expand Up @@ -405,6 +405,11 @@ public String getArgumentsLocation() {
return null;
}

@Override
public String getDefaultTemplateDir() {
return "JavaSpring";
}

@Override
public void preprocessOpenAPI(OpenAPI openAPI) {
super.preprocessOpenAPI(openAPI);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ public KotlinClientCodegen() {
cliOptions.add(dateLibrary);
}

@Override
public String getDefaultTemplateDir() {
return "kotlin-client";
}

public CodegenType getTag() {
return CodegenType.CLIENT;
}
Expand All @@ -79,7 +84,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/kotlin-client", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

if (additionalProperties.containsKey(DATE_LIBRARY)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ public void processOpts() {
super.processOpts();

if (StringUtils.isBlank(templateDir)) {
embeddedTemplateDir = templateDir = String.format("%s/kotlin-server", DEFAULT_TEMPLATE_DIR);
embeddedTemplateDir = templateDir = getTemplateDir();
}

if (!additionalProperties.containsKey(GENERATE_APIS)) {
Expand Down Expand Up @@ -239,6 +239,11 @@ public void addHandlebarHelpers(Handlebars handlebars) {
handlebars.registerHelpers(StringHelpers.class);
}

@Override
public String getDefaultTemplateDir() {
return "kotlin-server";
}

public static class Constants {
public final static String KTOR = "ktor";
public final static String AUTOMATIC_HEAD_REQUESTS = "featureAutoHead";
Expand Down
Loading

0 comments on commit 06a341e

Please sign in to comment.