package org.jtwig.resource.resolver.path;
import org.jtwig.resource.exceptions.ResourceException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.InvalidPathException;
public class RelativePathResolver implements RelativeReferenceResolver {
public static final String ROOT_PATH = "/";
private static final RelativePathResolver INSTANCE = new RelativePathResolver();
public static RelativePathResolver instance () {
return INSTANCE;
}
private RelativePathResolver () {}
@Override
public boolean isRelative(String path) {
return !path.startsWith(ROOT_PATH);
}
@Override
public String resolve(String parent, String child) {
try {
return new URI(String.format("%s/../%s", parent, child)).normalize().toString();
} catch (InvalidPathException | URISyntaxException e) {
throw new ResourceException("Invalid path", e);
}
}
}