package org.jtwig.resource.loader; import com.google.common.base.Optional; import org.jtwig.resource.exceptions.ResourceNotFoundException; import java.io.InputStream; import java.net.URL; import java.nio.charset.Charset; public class ClasspathResourceLoader implements ResourceLoader { public static final String ROOT_PATH = "/"; private final ClassLoader classLoader; public ClasspathResourceLoader(ClassLoader classLoader) { this.classLoader = classLoader; } @Override public Optional<Charset> getCharset(String path) { return Optional.absent(); } @Override public InputStream load(String path) { InputStream result = classLoader.getResourceAsStream(getPath(path)); if (result == null) throw new ResourceNotFoundException(String.format("Resource '%s' not found", path)); return result; } @Override public boolean exists(String path) { URL result = classLoader.getResource(getPath(path)); return result != null; } @Override public Optional<URL> toUrl(String path) { return Optional.fromNullable(classLoader.getResource(getPath(path))); } private String getPath(String path) { if (path.startsWith(ROOT_PATH)) { return path.substring(1); } return path; } }