home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / net / www / protocol / jar / Handler.class (.txt) next >
Encoding:
Java Class File  |  1979-12-31  |  2.3 KB  |  95 lines

  1. package sun.net.www.protocol.jar;
  2.  
  3. import java.io.IOException;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.net.URLConnection;
  7. import java.net.URLStreamHandler;
  8. import sun.net.www.ParseUtil;
  9.  
  10. public class Handler extends URLStreamHandler {
  11.    private static final String separator = "!/";
  12.  
  13.    protected URLConnection openConnection(URL var1) throws IOException {
  14.       return new JarURLConnection(var1, this);
  15.    }
  16.  
  17.    private int indexOfBangSlash(String var1) {
  18.       for(int var3 = var1.length(); (var3 = var1.lastIndexOf(33, var3)) != -1; --var3) {
  19.          if (var3 != var1.length() - 1 && var1.charAt(var3 + 1) == '/') {
  20.             return var3 + 1;
  21.          }
  22.       }
  23.  
  24.       return -1;
  25.    }
  26.  
  27.    protected void parseURL(URL var1, String var2, int var3, int var4) {
  28.       String var5 = null;
  29.       String var6 = null;
  30.       int var7 = var2.indexOf(35, var4);
  31.       boolean var8 = var7 == var3;
  32.       if (var7 > -1) {
  33.          var6 = var2.substring(var7 + 1, var2.length());
  34.          if (var8) {
  35.             var5 = var1.getFile();
  36.          }
  37.       }
  38.  
  39.       boolean var9 = var2.substring(0, 4).equalsIgnoreCase("jar:");
  40.       var2 = var2.substring(var3, var4);
  41.       if (var9) {
  42.          var5 = this.parseAbsoluteSpec(var2);
  43.       } else if (!var8) {
  44.          var5 = this.parseContextSpec(var1, var2);
  45.          int var10 = this.indexOfBangSlash(var5);
  46.          String var11 = var5.substring(0, var10);
  47.          String var12 = var5.substring(var10);
  48.          ParseUtil var13 = new ParseUtil();
  49.          var12 = var13.canonizeString(var12);
  50.          var5 = var11 + var12;
  51.       }
  52.  
  53.       ((URLStreamHandler)this).setURL(var1, "jar", "", -1, var5, var6);
  54.    }
  55.  
  56.    private String parseAbsoluteSpec(String var1) {
  57.       Object var2 = null;
  58.       int var3 = -1;
  59.       if ((var3 = this.indexOfBangSlash(var1)) == -1) {
  60.          throw new NullPointerException("no !/ in spec");
  61.       } else {
  62.          try {
  63.             String var4 = var1.substring(0, var3 - 1);
  64.             new URL(var4);
  65.             return var1;
  66.          } catch (MalformedURLException var5) {
  67.             throw new NullPointerException("invalid url: " + var1 + " (" + var5 + ")");
  68.          }
  69.       }
  70.    }
  71.  
  72.    private String parseContextSpec(URL var1, String var2) {
  73.       String var3 = var1.getFile();
  74.       if (var2.startsWith("/")) {
  75.          int var4 = this.indexOfBangSlash(var3);
  76.          if (var4 == -1) {
  77.             throw new NullPointerException("malformed context url:" + var1 + ": no !/");
  78.          }
  79.  
  80.          var3 = var3.substring(0, var4);
  81.       }
  82.  
  83.       if (!var3.endsWith("/") && !var2.startsWith("/")) {
  84.          int var5 = var3.lastIndexOf(47);
  85.          if (var5 == -1) {
  86.             throw new NullPointerException("malformed context url:" + var1);
  87.          }
  88.  
  89.          var3 = var3.substring(0, var5 + 1);
  90.       }
  91.  
  92.       return var3 + var2;
  93.    }
  94. }
  95.