package org.phms.sling.handlebars;
import com.github.jknack.handlebars.io.AbstractTemplateSource;
import java.io.IOException;
import java.io.Reader;
public class ReaderTemplateSource extends AbstractTemplateSource {
private Reader reader;
private long lastModified;
private String filename;
private static final int TEMPLATE_READER_BUFFER_SIZE = 2000;
public ReaderTemplateSource(String filename, long lastModified, Reader reader) {
this.reader = reader;
this.filename = filename;
this.lastModified = lastModified;
}
@Override
public String content() throws IOException {
StringBuilder templateAsString = new StringBuilder(TEMPLATE_READER_BUFFER_SIZE);
try {
char[] buffer = new char[TEMPLATE_READER_BUFFER_SIZE];
int nrOfChars;
if (reader != null) {
while ((nrOfChars = reader.read(buffer, 0, TEMPLATE_READER_BUFFER_SIZE)) != -1) {
templateAsString.append(buffer, 0, nrOfChars);
}
}
} finally {
if (reader != null) {
reader.close();
}
}
return templateAsString.toString();
}
@Override
public String filename() {
return filename;
}
@Override
public long lastModified() {
return lastModified;
}
}