Repository navigation
Expand file tree
/
Copy pathFreemarkerTemplateEngine.java
More file actions
83 lines (55 loc) · 2.46 KB
/
Copy pathFreemarkerTemplateEngine.java
File metadata and controls
83 lines (55 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package code2code.core.templateengine;
import java.io.File;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import code2code.core.generator.Generator;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.StringTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
public class FreemarkerTemplateEngine extends AbstractTemplateEngine implements TemplateEngine {
@Override
public List<String> getKnownExtensions() {
return Arrays.asList(new String[]{"ftl"});
}
public String processString(Generator generator, String templateContent, Map<String, String> context) throws Exception {
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(new File(generator.getGeneratorFolder().getLocationURI()));
StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
FileTemplateLoader fileTemplateLoader = new FileTemplateLoader();
TemplateLoader templateLoader = new MultiTemplateLoader(new TemplateLoader[] { stringTemplateLoader, fileTemplateLoader });
stringTemplateLoader.putTemplate("temp:param", templateContent);
configuration.setTemplateLoader(templateLoader);
Template template = configuration.getTemplate("temp:param");
Writer out = new StringWriter();
Map<String, Object> root = new HashMap<String, Object>();
root.putAll(context);
template.process(root, out, new DefaultObjectWrapper());
return out.toString();
}
public String processTemplate(Generator generator, String templateName, Map<String, String> context) throws Exception {
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(new File(generator.getGeneratorFolder().getLocationURI()));
Template template = configuration.getTemplate(templateName);
Writer out = new StringWriter();
Map<String, Object> root = new HashMap<String, Object>();
root.putAll(context);
template.process(root, out, new DefaultObjectWrapper());
return out.toString();
}
public String escape(String contents) {
String escaped = contents
.replace("${", "${r'${'}")
.replace("#{", "${r'#{'}")
.replace("<#", "${r'<#'}")
.replace("</#", "${r'</#'}");
return escaped;
}
}