package org.qrone.r7.resolver; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.util.Hashtable; import java.util.Map; public class MemoryResolver extends AbstractURIResolver{ private Map<URI, MemoryOutputStream> map = new Hashtable<URI, MemoryOutputStream>(); public MemoryResolver() { } @Override public boolean exist(String uri) { return map.containsKey(uri); } @Override public boolean existPath(String uri) { return false; } @Override public InputStream getInputStream(URI uri) throws IOException { MemoryOutputStream out = map.get(uri); if(out != null) return out.getInputStream(); return null; } @Override public OutputStream getOutputStream(URI uri) throws IOException { MemoryOutputStream out = new MemoryOutputStream(); map.put(uri, out); return out; } private static class MemoryOutputStream extends ByteArrayOutputStream{ public InputStream getInputStream(){ return new ByteArrayInputStream(buf); } } @Override public boolean remove(URI uri) { map.remove(uri); return true; } }