package org.jtwig.resource.config;
import com.google.common.collect.ImmutableList;
import org.jtwig.resource.loader.ClasspathResourceLoader;
import org.jtwig.resource.loader.FileResourceLoader;
import org.jtwig.resource.loader.StringResourceLoader;
import org.jtwig.resource.loader.TypedResourceLoader;
import org.jtwig.resource.reference.DefaultResourceReferenceExtractor;
import org.jtwig.resource.reference.PosixResourceReferenceExtractor;
import org.jtwig.resource.reference.ResourceReference;
import org.jtwig.resource.reference.UncResourceReferenceExtractor;
import org.jtwig.resource.reference.path.PathTypeSupplier;
import org.jtwig.resource.resolver.ReferenceRelativeResourceResolver;
import org.jtwig.resource.resolver.RelativeResourceResolver;
import org.jtwig.resource.resolver.path.RelativeFilePathResolver;
import org.jtwig.resource.resolver.path.RelativePathResolver;
import java.nio.charset.Charset;
import static java.util.Collections.singleton;
public class DefaultResourceConfiguration extends ResourceConfiguration {
public DefaultResourceConfiguration() {
super(ImmutableList.<RelativeResourceResolver>builder()
.add(new ReferenceRelativeResourceResolver(singleton(ResourceReference.CLASSPATH), RelativePathResolver.instance()))
.add(new ReferenceRelativeResourceResolver(singleton(ResourceReference.FILE), RelativeFilePathResolver.instance()))
.build(),
ImmutableList.of(ResourceReference.STRING, ResourceReference.MEMORY),
ImmutableList.of(
new TypedResourceLoader(ResourceReference.FILE, FileResourceLoader.instance()),
new TypedResourceLoader(ResourceReference.CLASSPATH, new ClasspathResourceLoader(DefaultResourceConfiguration.class.getClassLoader())),
new TypedResourceLoader(ResourceReference.STRING, StringResourceLoader.instance())
),
new DefaultResourceReferenceExtractor(PathTypeSupplier.pathTypeSupplier(), new PosixResourceReferenceExtractor(), new UncResourceReferenceExtractor()),
Charset.defaultCharset());
}
}