Skip to content

Commit a7a88fe

Browse files
committed
fixed custom template loading issue.
1 parent 76cc092 commit a7a88fe

File tree

2 files changed

+32
-17
lines changed

2 files changed

+32
-17
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/templates/CodegenTemplateLoader.java

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,41 @@ public class CodegenTemplateLoader extends FileTemplateLoader {
1111
private String templateDir;
1212
private String customTemplateDir;
1313

14-
public CodegenTemplateLoader(String templateDir, String customTemplateDir, String suffix) {
15-
super(customTemplateDir != null ? customTemplateDir : templateDir, suffix);
14+
public CodegenTemplateLoader(String templateDir, String suffix) {
15+
super(templateDir, suffix);
1616
this.templateDir = templateDir;
17-
this.customTemplateDir = customTemplateDir;
1817
}
1918

2019
public URL getResource(String location) throws IOException {
21-
File file = new File(location);
20+
if (this.customTemplateDir == null) {
21+
return this.getClass().getResource(location);
22+
}
23+
String templateFile = resolveTemplateFile(this.templateDir, location);
24+
templateFile = resolveTemplateFile(this.customTemplateDir, templateFile);
25+
final File file = new File(this.customTemplateDir, templateFile);
2226
if (file.exists()) {
2327
return file.toURI().toURL();
2428
}
25-
location = location.replace(this.customTemplateDir, StringUtils.EMPTY);
26-
location = this.templateDir + location;
27-
2829
return this.getClass().getResource(location);
2930
}
31+
32+
private String resolveTemplateFile(String templateDir, String templateFile) {
33+
if (templateFile.startsWith(templateDir)) {
34+
templateFile = StringUtils.replaceOnce(templateFile, templateDir, StringUtils.EMPTY);
35+
}
36+
return templateFile;
37+
}
38+
39+
public String getCustomTemplateDir() {
40+
return customTemplateDir;
41+
}
42+
43+
public void setCustomTemplateDir(String customTemplateDir) {
44+
this.customTemplateDir = customTemplateDir;
45+
}
46+
47+
public CodegenTemplateLoader customTemplateDir(String customTemplateDir) {
48+
this.customTemplateDir = customTemplateDir;
49+
return this;
50+
}
3051
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/templates/HandlebarTemplateEngine.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,13 @@ public String getName() {
3131
}
3232

3333
private com.github.jknack.handlebars.Template getHandlebars(String templateFile) throws IOException {
34-
final boolean needFileTemplateLoader = StringUtils.isNotBlank(config.customTemplateDir());
35-
final boolean fileExist = new File(templateFile).exists();
3634
templateFile = templateFile.replace(".mustache", StringUtils.EMPTY).replace("\\", "/");
3735
final String templateDir = config.templateDir().replace("\\", "/");
3836
final TemplateLoader templateLoader;
39-
if (needFileTemplateLoader && fileExist) {
40-
String customTemplateDir = config.customTemplateDir().replace("\\", "/");
41-
templateFile = resolveTemplateFile(customTemplateDir, templateFile);
42-
templateLoader = new CodegenTemplateLoader("/" + templateDir, customTemplateDir, ".mustache");
43-
} else {
44-
templateFile = resolveTemplateFile(templateDir, templateFile);
45-
templateLoader = new ClassPathTemplateLoader("/" + templateDir, ".mustache");
46-
}
37+
String customTemplateDir = config.customTemplateDir() != null ? config.customTemplateDir().replace("\\", "/") : null;
38+
templateFile = resolveTemplateFile(templateDir, templateFile);
39+
templateLoader = new CodegenTemplateLoader("/" + templateDir, ".mustache")
40+
.customTemplateDir(customTemplateDir);
4741
final Handlebars handlebars = new Handlebars(templateLoader);
4842
handlebars.prettyPrint(true);
4943
config.addHandlebarHelpers(handlebars);

0 commit comments

Comments
 (0)