package com.blazebit.template; import freemarker.cache.TemplateLoader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; public class ClassPathTemplateLoader implements TemplateLoader { private final ClassLoader classLoader; public ClassPathTemplateLoader() { this(ClassPathTemplateLoader.class.getClassLoader()); } public ClassPathTemplateLoader(ClassLoader classLoader) { this.classLoader = classLoader; } @Override public Object findTemplateSource(String string) throws IOException { return classLoader.getResource(string); } @Override public long getLastModified(Object o) { URL url = (URL) o; if ("file".equals(url.getProtocol())) { try { return new File(url.toURI()).lastModified(); } catch (URISyntaxException ex) { return -1; } } else if ("jar".equals(url.getProtocol())) { try { URLConnection connection = url.openConnection(); return connection.getLastModified(); } catch (IOException ex) { return -1; } } else { return -1; } } @Override public Reader getReader(Object o, String string) throws IOException { return new InputStreamReader(((URL) o).openStream()); } @Override public void closeTemplateSource(Object o) throws IOException { } }