Skip to content

Commit b58579e

Browse files
committed
Get back multilevel ssi processing
1 parent 6c61f36 commit b58579e

5 files changed

Lines changed: 22 additions & 5 deletions

File tree

coverage-report/src/test/java/org/jooby/issues/Issue644.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ public void ssi() throws Exception {
2424
"</script>")
2525
.header("Content-Type", "text/html;charset=utf-8");
2626

27+
request()
28+
.get("/i644/root.html")
29+
.expect("<!-- The template for the note object -->\n" +
30+
"<p>l1</p>\n" +
31+
"<p>l2</p>\n" +
32+
"")
33+
.header("Content-Type", "text/html;charset=utf-8");
34+
2735
request()
2836
.get("/644/index.html")
2937
.expect("<!-- The template for the note object -->\n" +
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<p>l1</p>
2+
<!-- /i644/l2.html -->
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p>l2</p>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<!-- The template for the note object -->
2+
<!-- /i644/l1.html -->

jooby/src/main/java/org/jooby/handlers/SSIHandler.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,20 @@ public SSIHandler delimiters(final String start, final String end) {
136136
@Override
137137
protected void send(final Request req, final Response rsp, final Asset asset) throws Throwable {
138138
Env env = req.require(Env.class);
139-
CharSequence text = env.resolver()
140-
.delimiters(startDelimiter, endDelimiter)
141-
.source(this::file)
142-
.ignoreMissing()
143-
.resolve(text(asset.stream()));
139+
CharSequence text = process(env, text(asset.stream()));
144140

145141
rsp.type(asset.type())
146142
.send(text);
147143
}
148144

145+
private String process(final Env env, final String src) {
146+
return env.resolver()
147+
.delimiters(startDelimiter, endDelimiter)
148+
.source(key -> process(env, file(key)))
149+
.ignoreMissing()
150+
.resolve(src);
151+
}
152+
149153
private String file(final String key) {
150154
String file = Route.normalize(key.trim());
151155
return text(getClass().getResourceAsStream(file));

0 commit comments

Comments
 (0)