001 package com.khubla.pragmatach.plugin.freemarker; 002 003 import java.io.IOException; 004 import java.io.InputStream; 005 import java.io.InputStreamReader; 006 import java.io.Reader; 007 008 import javax.servlet.ServletContext; 009 010 import com.khubla.pragmatach.framework.resourceloader.DefaultResourceLoaderImpl; 011 import com.khubla.pragmatach.framework.resourceloader.ResourceLoader; 012 013 import freemarker.cache.TemplateLoader; 014 015 /** 016 * @author tome 017 */ 018 public class PragmatachTemplateLoader implements TemplateLoader { 019 /** 020 * ServletContext 021 */ 022 private final ServletContext servletContext; 023 024 public PragmatachTemplateLoader(ServletContext servletContext) { 025 this.servletContext = servletContext; 026 } 027 028 @Override 029 public void closeTemplateSource(Object object) throws IOException { 030 final InputStream inputStream = (InputStream) object; 031 inputStream.close(); 032 } 033 034 @Override 035 public Object findTemplateSource(String template) throws IOException { 036 try { 037 final ResourceLoader resourceLoader = new DefaultResourceLoaderImpl( 038 servletContext); 039 final InputStream is = resourceLoader.getResource(template); 040 return is; 041 } catch (final Exception e) { 042 throw new IOException(e); 043 } 044 } 045 046 @Override 047 public long getLastModified(Object object) { 048 return 0; 049 } 050 051 @Override 052 public Reader getReader(Object object, String string) throws IOException { 053 final InputStream inputStream = (InputStream) object; 054 return new InputStreamReader(inputStream, "UTF-8"); 055 } 056 }