package org.qrone.r7.resolver;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URL;
import javax.servlet.ServletContext;
import org.qrone.util.UnicodeInputStream;
public class ServletResolver implements URIResolver{
private ServletContext context;
public ServletResolver(ServletContext context) {
this.context = context;
}
@Override
public boolean exist(String uri) {
try {
URL url = context.getResource(uri);
if (url == null) {
uri = "/WEB-INF" + uri;
url = context.getResource(uri);
}
if (url == null) {
return false;
} else {
url = new URL("file", "", context.getRealPath(uri));
}
return true;
} catch (IOException e) {
return false;
}
}
@Override
public boolean existPath(String uri) {
return false;
}
@Override
public InputStream getInputStream(URI u) throws IOException {
try {
String uri = u.toString();
URL url = context.getResource(uri);
if (url == null) {
uri = "/WEB-INF" + uri;
url = context.getResource(uri);
}
if (url == null) {
return null;
} else {
url = new URL("file", "", context.getRealPath(uri));
}
return new UnicodeInputStream(url.openConnection().getInputStream());
} catch (IOException e) {
return null;
}
}
@Override
public OutputStream getOutputStream(URI uri) throws IOException {
return null;
}
@Override
public boolean remove(URI uri) {
return false;
}
@Override
public void addUpdateListener(Listener l) {
}
}