import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import net.pterodactylus.util.template.TemplateException;
import net.pterodactylus.util.template.TemplateParser;
-import freenet.support.io.Closer;
-
import com.google.common.base.Charsets;
/**
* {@link Template} implementation that can be reloaded from the filesystem.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FilesystemTemplate extends Template {
private final String filename;
- private final AtomicReference<LastLoadedTemplate> lastTemplate = new AtomicReference<LastLoadedTemplate>();
+ private final AtomicReference<LastLoadedTemplate> lastTemplate = new AtomicReference<>();
private final TemplateContext initialContext = new TemplateContext();
- private final List<Part> parts = new ArrayList<Part>();
+ private final List<Part> parts = new ArrayList<>();
public FilesystemTemplate(String filename) {
this.filename = filename;
private void loadTemplate() {
File templateFile = new File(filename);
- if (!templateFile.exists()) {
- throw new TemplateFileNotFoundException(filename);
- }
if (templateWasLoaded() && !templateFileHasBeenModifiedAfterLoading(templateFile)) {
return;
}
- InputStream templateInputStream = null;
- Reader templateReader = null;
- try {
- templateInputStream = new FileInputStream(templateFile);
- templateReader = new InputStreamReader(templateInputStream, Charsets.UTF_8);
+ try (InputStream templateInputStream = new FileInputStream(templateFile);
+ Reader templateReader = new InputStreamReader(templateInputStream, Charsets.UTF_8)) {
Template template = TemplateParser.parse(templateReader);
lastTemplate.set(new LastLoadedTemplate(template));
template.getInitialContext().mergeContext(initialContext);
for (Part part : parts) {
template.add(part);
}
- } catch (FileNotFoundException e) {
+ } catch (IOException e) {
throw new TemplateFileNotFoundException(filename);
- } finally {
- Closer.close(templateReader);
- Closer.close(templateInputStream);
}
}
/**
* Exception that signals that a template file could not be found.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class TemplateFileNotFoundException extends RuntimeException {