001    package org.crsh.vfs.spi.ram;
002    
003    import org.crsh.vfs.Path;
004    
005    import java.io.IOException;
006    import java.net.URL;
007    import java.net.URLConnection;
008    import java.net.URLStreamHandler;
009    
010    /** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
011    public class RAMURLStreamHandler extends URLStreamHandler {
012    
013      /** . */
014      private final RAMDriver driver;
015    
016      public RAMURLStreamHandler(RAMDriver driver) {
017        this.driver = driver;
018      }
019    
020      @Override
021      protected URLConnection openConnection(URL u) throws IOException {
022        Path path = Path.get(u.getFile());
023        if (path.isDir()) {
024          throw new IOException("Cannot open dir");
025        }
026        String file = driver.entries.get(path);
027        if (file == null) {
028          throw new IOException("Cannot open non existing dir " + path);
029        }
030        return new RAMURLConnection(u, file);
031      }
032    }