package org.jtwig.resource.loader; import com.google.common.base.Optional; import org.jtwig.resource.exceptions.ResourceNotFoundException; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.Charset; public class FileResourceLoader implements ResourceLoader { public static FileResourceLoader instance () { return new FileResourceLoader(new File("")); } private final File baseDirectory; public FileResourceLoader (File baseDirectory) { this.baseDirectory = baseDirectory; } @Override public Optional<Charset> getCharset(String path) { return Optional.absent(); } @Override public InputStream load(String path) { try { return new FileInputStream(file(path)); } catch (FileNotFoundException e) { throw new ResourceNotFoundException(e); } } @Override public boolean exists(String path) { return file(path).exists(); } @Override public Optional<URL> toUrl(String path) { try { return Optional.of(file(path).toURI().toURL()); } catch (MalformedURLException e) { return Optional.absent(); } } private File file(String path) { File file = new File(path); if (file.isAbsolute()) { return file; } else { return new File(baseDirectory, path); } } }