package org.qrone.r7.resolver; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; public class FilteredResolver extends AbstractURIResolver{ private URIResolver r; private String prefix; public FilteredResolver(String prefix, URIResolver r) { this.prefix = prefix; this.r = r; } private URI prefixed(URI uri){ String u = uri.toString(); if(u.startsWith(prefix)){ try { return new URI(u.substring(prefix.length())); } catch (URISyntaxException e) { } } return null; } @Override public boolean exist(String uri) { if(uri.startsWith(prefix)) return r.exist(uri.substring(prefix.length())); return false; } @Override public boolean existPath(String uri) { if(uri.startsWith(prefix)) return r.existPath(uri.substring(prefix.length())); return false; } @Override public InputStream getInputStream(URI uri) throws IOException { uri = prefixed(uri); if(uri != null) return r.getInputStream(uri); return null; } @Override public OutputStream getOutputStream(URI uri) throws IOException { uri = prefixed(uri); if(uri != null) return r.getOutputStream(uri); return null; } @Override public boolean remove(URI uri) { uri = prefixed(uri); if(uri != null) return r.remove(uri); return false; } }