in src/main/java/org/apache/sling/servlets/post/HtmlResponse.java [107:173]
protected void doSend(HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
// get changelog
changes.insert(0, "<pre>");
changes.append("</pre>");
if (getError() == null) {
setProperty(PN_CHANGE_LOG, changes.toString());
} else {
setProperty(PN_CHANGE_LOG, "");
}
Writer out = response.getWriter();
String templateName;
if(isSafeReferer()) {
templateName = TEMPLATE_NAME;
} else {
templateName = NO_GO_BACK_TEMPLATE_NAME;
}
InputStream template = getClass().getResourceAsStream(templateName);
Reader in = new BufferedReader(new InputStreamReader(template));
StringBuilder varBuffer = new StringBuilder();
int state = 0;
int read;
while ((read = in.read()) >= 0) {
char c = (char) read;
switch (state) {
// initial
case 0:
if (c == '$') {
state = 1;
} else {
out.write(c);
}
break;
// $ read
case 1:
if (c == '{') {
state = 2;
} else {
state = 0;
out.write('$');
out.write(c);
}
break;
// { read
case 2:
if (c == '}') {
state = 0;
Object prop = getProperty(varBuffer.toString());
if (prop != null) {
out.write(ResponseUtil.escapeXml(prop.toString()));
}
varBuffer.setLength(0);
} else {
varBuffer.append(c);
}
}
}
in.close();
out.flush();
}