Skip to content

Commit 91d69ad

Browse files
committed
fixed error with partials when custom templates are used.
1 parent 466f53b commit 91d69ad

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.swagger.codegen.v3.templates;
2+
3+
import com.github.jknack.handlebars.io.FileTemplateLoader;
4+
import org.apache.commons.lang3.StringUtils;
5+
6+
import java.io.File;
7+
import java.io.IOException;
8+
import java.net.URL;
9+
10+
public class CodegenTemplateLoader extends FileTemplateLoader {
11+
private String templateDir;
12+
private String customTemplateDir;
13+
14+
public CodegenTemplateLoader(String templateDir, String customTemplateDir, String suffix) {
15+
super(customTemplateDir != null ? customTemplateDir : templateDir, suffix);
16+
this.templateDir = templateDir;
17+
this.customTemplateDir = customTemplateDir;
18+
}
19+
20+
public URL getResource(String location) throws IOException {
21+
File file = new File(location);
22+
if (file.exists()) {
23+
return file.toURI().toURL();
24+
}
25+
location = location.replace(this.customTemplateDir, StringUtils.EMPTY);
26+
location = this.templateDir + location;
27+
28+
return this.getClass().getResource(location);
29+
}
30+
}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.github.jknack.handlebars.Handlebars;
44
import com.github.jknack.handlebars.io.ClassPathTemplateLoader;
5-
import com.github.jknack.handlebars.io.FileTemplateLoader;
65
import com.github.jknack.handlebars.io.TemplateLoader;
76
import io.swagger.codegen.v3.CodegenConfig;
87
import io.swagger.codegen.v3.CodegenConstants;
@@ -35,14 +34,13 @@ private com.github.jknack.handlebars.Template getHandlebars(String templateFile)
3534
final boolean needFileTemplateLoader = StringUtils.isNotBlank(config.customTemplateDir());
3635
final boolean fileExist = new File(templateFile).exists();
3736
templateFile = templateFile.replace(".mustache", StringUtils.EMPTY).replace("\\", "/");
38-
final String templateDir;
39-
TemplateLoader templateLoader = null;
37+
final String templateDir = config.templateDir().replace("\\", "/");
38+
final TemplateLoader templateLoader;
4039
if (needFileTemplateLoader && fileExist) {
41-
templateDir = config.customTemplateDir().replace("\\", "/");
42-
templateFile = resolveTemplateFile(templateDir, templateFile);
43-
templateLoader = new FileTemplateLoader(templateDir, ".mustache");
40+
String customTemplateDir = config.customTemplateDir().replace("\\", "/");
41+
templateFile = resolveTemplateFile(customTemplateDir, templateFile);
42+
templateLoader = new CodegenTemplateLoader("/" + templateDir, customTemplateDir, ".mustache");
4443
} else {
45-
templateDir = config.templateDir().replace("\\", "/");
4644
templateFile = resolveTemplateFile(templateDir, templateFile);
4745
templateLoader = new ClassPathTemplateLoader("/" + templateDir, ".mustache");
4846
}

0 commit comments

Comments
 (0)