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;
import java.util.Collection;
public class CompositeResourceLoader implements ResourceLoader {
private final Collection<ResourceLoader> resourceLoaders;
public CompositeResourceLoader(Collection<ResourceLoader> resourceLoaders) {
this.resourceLoaders = resourceLoaders;
}
@Override
public Optional<Charset> getCharset(String path) {
for (ResourceLoader resourceLoader : resourceLoaders) {
if (resourceLoader.exists(path))
return resourceLoader.getCharset(path);
}
return Optional.absent();
}
@Override
public InputStream load(String path) {
for (ResourceLoader resourceLoader : resourceLoaders) {
if (resourceLoader.exists(path)) {
return resourceLoader.load(path);
}
}
throw new ResourceNotFoundException(String.format("Resource '%s' not found", path));
}
@Override
public boolean exists(String path) {
for (ResourceLoader resourceLoader : resourceLoaders) {
if (resourceLoader.exists(path))
return true;
}
return false;
}
@Override
public Optional<URL> toUrl(String path) {
for (ResourceLoader resourceLoader : resourceLoaders) {
if (resourceLoader.exists(path)) {
return resourceLoader.toUrl(path);
}
}
return Optional.absent();
}
}