Skip to content

Commit ce580fa

Browse files
committed
BAEL-2782 Template engines in groovy
1 parent bc3ed52 commit ce580fa

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Dear <% out << (user) %>,
2+
Please read the requested article below.
3+
<% out << (articleText) %>
4+
From,
5+
<% out << (signature) %>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Dear $user,
2+
Thanks for subscribing our services.
3+
${signature}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package com.baeldung.templateengine
2+
3+
import groovy.text.SimpleTemplateEngine
4+
import groovy.text.StreamingTemplateEngine
5+
import groovy.text.GStringTemplateEngine
6+
import groovy.text.XmlTemplateEngine
7+
import groovy.text.XmlTemplateEngine
8+
import groovy.text.markup.MarkupTemplateEngine
9+
import groovy.text.markup.TemplateConfiguration
10+
11+
class TemplateEnginesUnitTest extends GroovyTestCase {
12+
13+
def bindMap = [user: "Norman", signature: "Baeldung"]
14+
15+
void testSimpleTemplateEngine() {
16+
def smsTemplate = 'Dear <% print user %>, Thanks for reading our Article. ${signature}'
17+
def smsText = new SimpleTemplateEngine().createTemplate(smsTemplate).make(bindMap)
18+
19+
assert smsText.toString() == "Dear Norman, Thanks for reading our Article. Baeldung"
20+
}
21+
22+
void testStreamingTemplateEngine() {
23+
def articleEmailTemplate = new File('src/main/resources/articleEmail.template')
24+
bindMap.articleText = """1. Overview
25+
This is a tutorial article on Template Engines""" //can be a string larger than 64k
26+
27+
def articleEmailText = new StreamingTemplateEngine().createTemplate(articleEmailTemplate).make(bindMap)
28+
29+
assert articleEmailText.toString() == """Dear Norman,
30+
Please read the requested article below.
31+
1. Overview
32+
This is a tutorial article on Template Engines
33+
From,
34+
Baeldung"""
35+
36+
}
37+
38+
void testGStringTemplateEngine() {
39+
def emailTemplate = new File('src/main/resources/email.template')
40+
def emailText = new GStringTemplateEngine().createTemplate(emailTemplate).make(bindMap)
41+
42+
assert emailText.toString() == "Dear Norman,\nThanks for subscribing our services.\nBaeldung"
43+
}
44+
45+
void testXmlTemplateEngine() {
46+
def emailXmlTemplate = '''<xs xmlns:gsp='groovy-server-pages'>
47+
<gsp:scriptlet>def emailContent = "Thanks for subscribing our services."</gsp:scriptlet>
48+
<email>
49+
<greet>Dear ${user}</greet>
50+
<content><gsp:expression>emailContent</gsp:expression></content>
51+
<signature>${signature}</signature>
52+
</email>
53+
</xs>'''
54+
def emailXml = new XmlTemplateEngine().createTemplate(emailXmlTemplate).make(bindMap)
55+
println emailXml.toString()
56+
}
57+
58+
void testMarkupTemplateEngineHtml() {
59+
def emailHtmlTemplate = """html {
60+
head {
61+
title('Service Subscription Email')
62+
}
63+
body {
64+
p('Dear Norman')
65+
p('Thanks for subscribing our services.')
66+
p('Baeldung')
67+
}
68+
}"""
69+
70+
71+
def emailHtml = new MarkupTemplateEngine().createTemplate(emailHtmlTemplate).make()
72+
println emailHtml.toString()
73+
74+
}
75+
76+
void testMarkupTemplateEngineXml() {
77+
def emailXmlTemplate = """xmlDeclaration()
78+
xs{
79+
email {
80+
greet('Dear Norman')
81+
content('Thanks for subscribing our services.')
82+
signature('Baeldung')
83+
}
84+
}
85+
"""
86+
TemplateConfiguration config = new TemplateConfiguration()
87+
config.autoIndent = true
88+
config.autoEscape = true
89+
config.autoNewLine = true
90+
91+
def emailXml = new MarkupTemplateEngine(config).createTemplate(emailXmlTemplate).make()
92+
93+
println emailXml.toString()
94+
}
95+
96+
}

0 commit comments

Comments
 (0)