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 / java / net / URLConnection.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  9.1 KB  |  483 lines

  1. package java.net;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.security.AccessController;
  7. import java.security.AllPermission;
  8. import java.security.Permission;
  9. import java.util.Date;
  10. import java.util.Hashtable;
  11. import java.util.StringTokenizer;
  12. import sun.net.www.MimeTable;
  13. import sun.security.action.GetPropertyAction;
  14.  
  15. public abstract class URLConnection {
  16.    protected URL url;
  17.    protected boolean doInput = true;
  18.    protected boolean doOutput = false;
  19.    private static boolean defaultAllowUserInteraction = false;
  20.    protected boolean allowUserInteraction;
  21.    private static boolean defaultUseCaches = true;
  22.    protected boolean useCaches;
  23.    protected long ifModifiedSince;
  24.    protected boolean connected;
  25.    private static FileNameMap fileNameMap;
  26.    private static boolean fileNameMapLoaded = false;
  27.    static ContentHandlerFactory factory;
  28.    private static Hashtable handlers = new Hashtable();
  29.    private static final ContentHandler UnknownContentHandlerP = new UnknownContentHandler();
  30.    private static final String contentClassPrefix = "sun.net.www.content";
  31.    private static final String contentPathProp = "java.content.handler.pkgs";
  32.  
  33.    public static synchronized FileNameMap getFileNameMap() {
  34.       if (fileNameMap == null && !fileNameMapLoaded) {
  35.          fileNameMap = MimeTable.loadTable();
  36.          fileNameMapLoaded = true;
  37.       }
  38.  
  39.       return new 1();
  40.    }
  41.  
  42.    public static void setFileNameMap(FileNameMap var0) {
  43.       SecurityManager var1 = System.getSecurityManager();
  44.       if (var1 != null) {
  45.          var1.checkSetFactory();
  46.       }
  47.  
  48.       fileNameMap = var0;
  49.    }
  50.  
  51.    public abstract void connect() throws IOException;
  52.  
  53.    protected URLConnection(URL var1) {
  54.       this.allowUserInteraction = defaultAllowUserInteraction;
  55.       this.useCaches = defaultUseCaches;
  56.       this.ifModifiedSince = 0L;
  57.       this.connected = false;
  58.       this.url = var1;
  59.    }
  60.  
  61.    public URL getURL() {
  62.       return this.url;
  63.    }
  64.  
  65.    public int getContentLength() {
  66.       return this.getHeaderFieldInt("content-length", -1);
  67.    }
  68.  
  69.    public String getContentType() {
  70.       return this.getHeaderField("content-type");
  71.    }
  72.  
  73.    public String getContentEncoding() {
  74.       return this.getHeaderField("content-encoding");
  75.    }
  76.  
  77.    public long getExpiration() {
  78.       return this.getHeaderFieldDate("expires", 0L);
  79.    }
  80.  
  81.    public long getDate() {
  82.       return this.getHeaderFieldDate("date", 0L);
  83.    }
  84.  
  85.    public long getLastModified() {
  86.       return this.getHeaderFieldDate("last-modified", 0L);
  87.    }
  88.  
  89.    public String getHeaderField(String var1) {
  90.       return null;
  91.    }
  92.  
  93.    public int getHeaderFieldInt(String var1, int var2) {
  94.       try {
  95.          return Integer.parseInt(this.getHeaderField(var1));
  96.       } catch (Throwable var4) {
  97.          return var2;
  98.       }
  99.    }
  100.  
  101.    public long getHeaderFieldDate(String var1, long var2) {
  102.       try {
  103.          return Date.parse(this.getHeaderField(var1));
  104.       } catch (Throwable var5) {
  105.          return var2;
  106.       }
  107.    }
  108.  
  109.    public String getHeaderFieldKey(int var1) {
  110.       return null;
  111.    }
  112.  
  113.    public String getHeaderField(int var1) {
  114.       return null;
  115.    }
  116.  
  117.    public Object getContent() throws IOException {
  118.       this.getInputStream();
  119.       return this.getContentHandler().getContent(this);
  120.    }
  121.  
  122.    public Object getContent(Class[] var1) throws IOException {
  123.       this.getInputStream();
  124.       return this.getContentHandler().getContent(this, var1);
  125.    }
  126.  
  127.    public Permission getPermission() throws IOException {
  128.       return new AllPermission();
  129.    }
  130.  
  131.    public InputStream getInputStream() throws IOException {
  132.       throw new UnknownServiceException("protocol doesn't support input");
  133.    }
  134.  
  135.    public OutputStream getOutputStream() throws IOException {
  136.       throw new UnknownServiceException("protocol doesn't support output");
  137.    }
  138.  
  139.    public String toString() {
  140.       return this.getClass().getName() + ":" + this.url;
  141.    }
  142.  
  143.    public void setDoInput(boolean var1) {
  144.       if (this.connected) {
  145.          throw new IllegalAccessError("Already connected");
  146.       } else {
  147.          this.doInput = var1;
  148.       }
  149.    }
  150.  
  151.    public boolean getDoInput() {
  152.       return this.doInput;
  153.    }
  154.  
  155.    public void setDoOutput(boolean var1) {
  156.       if (this.connected) {
  157.          throw new IllegalAccessError("Already connected");
  158.       } else {
  159.          this.doOutput = var1;
  160.       }
  161.    }
  162.  
  163.    public boolean getDoOutput() {
  164.       return this.doOutput;
  165.    }
  166.  
  167.    public void setAllowUserInteraction(boolean var1) {
  168.       if (this.connected) {
  169.          throw new IllegalAccessError("Already connected");
  170.       } else {
  171.          this.allowUserInteraction = var1;
  172.       }
  173.    }
  174.  
  175.    public boolean getAllowUserInteraction() {
  176.       return this.allowUserInteraction;
  177.    }
  178.  
  179.    public static void setDefaultAllowUserInteraction(boolean var0) {
  180.       defaultAllowUserInteraction = var0;
  181.    }
  182.  
  183.    public static boolean getDefaultAllowUserInteraction() {
  184.       return defaultAllowUserInteraction;
  185.    }
  186.  
  187.    public void setUseCaches(boolean var1) {
  188.       if (this.connected) {
  189.          throw new IllegalAccessError("Already connected");
  190.       } else {
  191.          this.useCaches = var1;
  192.       }
  193.    }
  194.  
  195.    public boolean getUseCaches() {
  196.       return this.useCaches;
  197.    }
  198.  
  199.    public void setIfModifiedSince(long var1) {
  200.       if (this.connected) {
  201.          throw new IllegalAccessError("Already connected");
  202.       } else {
  203.          this.ifModifiedSince = var1;
  204.       }
  205.    }
  206.  
  207.    public long getIfModifiedSince() {
  208.       return this.ifModifiedSince;
  209.    }
  210.  
  211.    public boolean getDefaultUseCaches() {
  212.       return defaultUseCaches;
  213.    }
  214.  
  215.    public void setDefaultUseCaches(boolean var1) {
  216.       defaultUseCaches = var1;
  217.    }
  218.  
  219.    public void setRequestProperty(String var1, String var2) {
  220.       if (this.connected) {
  221.          throw new IllegalAccessError("Already connected");
  222.       }
  223.    }
  224.  
  225.    public String getRequestProperty(String var1) {
  226.       if (this.connected) {
  227.          throw new IllegalAccessError("Already connected");
  228.       } else {
  229.          return null;
  230.       }
  231.    }
  232.  
  233.    public static void setDefaultRequestProperty(String var0, String var1) {
  234.    }
  235.  
  236.    public static String getDefaultRequestProperty(String var0) {
  237.       return null;
  238.    }
  239.  
  240.    public static synchronized void setContentHandlerFactory(ContentHandlerFactory var0) {
  241.       if (factory != null) {
  242.          throw new Error("factory already defined");
  243.       } else {
  244.          SecurityManager var1 = System.getSecurityManager();
  245.          if (var1 != null) {
  246.             var1.checkSetFactory();
  247.          }
  248.  
  249.          factory = var0;
  250.       }
  251.    }
  252.  
  253.    synchronized ContentHandler getContentHandler() throws UnknownServiceException {
  254.       String var1 = this.stripOffParameters(this.getContentType());
  255.       ContentHandler var2 = null;
  256.       if (var1 == null) {
  257.          throw new UnknownServiceException("no content-type");
  258.       } else {
  259.          try {
  260.             var2 = (ContentHandler)handlers.get(var1);
  261.             if (var2 != null) {
  262.                return var2;
  263.             }
  264.          } catch (Exception var5) {
  265.          }
  266.  
  267.          if (factory != null) {
  268.             var2 = factory.createContentHandler(var1);
  269.          }
  270.  
  271.          if (var2 == null) {
  272.             try {
  273.                var2 = this.lookupContentHandlerClassFor(var1);
  274.             } catch (Exception var4) {
  275.                ((Throwable)var4).printStackTrace();
  276.                var2 = UnknownContentHandlerP;
  277.             }
  278.  
  279.             handlers.put(var1, var2);
  280.          }
  281.  
  282.          return var2;
  283.       }
  284.    }
  285.  
  286.    private String stripOffParameters(String var1) {
  287.       int var2 = var1.indexOf(59);
  288.       return var2 > 0 ? var1.substring(0, var2) : var1;
  289.    }
  290.  
  291.    private ContentHandler lookupContentHandlerClassFor(String var1) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
  292.       String var2 = this.typeToPackageName(var1);
  293.       String var3 = this.getContentHandlerPkgPrefixes();
  294.       StringTokenizer var4 = new StringTokenizer(var3, "|");
  295.  
  296.       while(var4.hasMoreTokens()) {
  297.          String var5 = var4.nextToken().trim();
  298.  
  299.          try {
  300.             String var6 = var5 + "." + var2;
  301.             Class var7 = null;
  302.  
  303.             try {
  304.                var7 = Class.forName(var6);
  305.             } catch (ClassNotFoundException var10) {
  306.                ClassLoader var9 = ClassLoader.getSystemClassLoader();
  307.                if (var9 != null) {
  308.                   var7 = var9.loadClass(var6);
  309.                }
  310.             }
  311.  
  312.             if (var7 != null) {
  313.                ContentHandler var8 = (ContentHandler)var7.newInstance();
  314.                return var8;
  315.             }
  316.          } catch (Exception var11) {
  317.          }
  318.       }
  319.  
  320.       return UnknownContentHandlerP;
  321.    }
  322.  
  323.    private String typeToPackageName(String var1) {
  324.       var1 = var1.toLowerCase();
  325.       int var2 = var1.length();
  326.       char[] var3 = new char[var2];
  327.       var1.getChars(0, var2, var3, 0);
  328.  
  329.       for(int var4 = 0; var4 < var2; ++var4) {
  330.          char var5 = var3[var4];
  331.          if (var5 == '/') {
  332.             var3[var4] = '.';
  333.          } else if (('A' > var5 || var5 > 'Z') && ('a' > var5 || var5 > 'z') && ('0' > var5 || var5 > '9')) {
  334.             var3[var4] = '_';
  335.          }
  336.       }
  337.  
  338.       return new String(var3);
  339.    }
  340.  
  341.    private String getContentHandlerPkgPrefixes() {
  342.       String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("java.content.handler.pkgs", ""));
  343.       if (var1 != "") {
  344.          var1 = var1 + "|";
  345.       }
  346.  
  347.       return var1 + "sun.net.www.content";
  348.    }
  349.  
  350.    protected static String guessContentTypeFromName(String var0) {
  351.       Object var1 = null;
  352.       String var2 = getFileNameMap().getContentTypeFor(var0);
  353.       return var2;
  354.    }
  355.  
  356.    public static String guessContentTypeFromStream(InputStream var0) throws IOException {
  357.       var0.mark(10);
  358.       int var1 = var0.read();
  359.       int var2 = var0.read();
  360.       int var3 = var0.read();
  361.       int var4 = var0.read();
  362.       int var5 = var0.read();
  363.       int var6 = var0.read();
  364.       int var7 = var0.read();
  365.       int var8 = var0.read();
  366.       var0.reset();
  367.       if (var1 == 202 && var2 == 254 && var3 == 186 && var4 == 190) {
  368.          return "application/java-vm";
  369.       } else if (var1 == 172 && var2 == 237) {
  370.          return "application/x-java-serialized-object";
  371.       } else if (var1 == 71 && var2 == 73 && var3 == 70 && var4 == 56) {
  372.          return "image/gif";
  373.       } else if (var1 == 35 && var2 == 100 && var3 == 101 && var4 == 102) {
  374.          return "image/x-bitmap";
  375.       } else if (var1 == 33 && var2 == 32 && var3 == 88 && var4 == 80 && var5 == 77 && var6 == 50) {
  376.          return "image/x-pixmap";
  377.       } else if (var1 == 137 && var2 == 80 && var3 == 78 && var4 == 71 && var5 == 13 && var6 == 10 && var7 == 26 && var8 == 10) {
  378.          return "image/png";
  379.       } else if (var1 == 46 && var2 == 115 && var3 == 110 && var4 == 100) {
  380.          return "audio/basic";
  381.       } else if (var1 == 100 && var2 == 110 && var3 == 115 && var4 == 46) {
  382.          return "audio/basic";
  383.       } else {
  384.          if (var1 == 60) {
  385.             if (var2 == 33 || var2 == 104 && (var3 == 116 && var4 == 109 && var5 == 108 || var3 == 101 && var4 == 97 && var5 == 100) || var2 == 98 && var3 == 111 && var4 == 100 && var5 == 121 || var2 == 72 && (var3 == 84 && var4 == 77 && var5 == 76 || var3 == 69 && var4 == 65 && var5 == 68) || var2 == 66 && var3 == 79 && var4 == 68 && var5 == 89) {
  386.                return "text/html";
  387.             }
  388.  
  389.             if (var2 == 63 && var3 == 120 && var4 == 109 && var5 == 108 && var6 == 32) {
  390.                return "application/xml";
  391.             }
  392.          }
  393.  
  394.          if (var1 == 254 && var2 == 255 && var3 == 0 && var4 == 60 && var5 == 0 && var6 == 63 && var7 == 0 && var8 == 120) {
  395.             return "application/xml";
  396.          } else if (var1 == 255 && var2 == 254 && var3 == 60 && var4 == 0 && var5 == 63 && var6 == 0 && var7 == 120 && var8 == 0) {
  397.             return "application/xml";
  398.          } else if (var1 == 255 && var2 == 216 && var3 == 255 && var4 == 224) {
  399.             return "image/jpeg";
  400.          } else if (var1 == 255 && var2 == 216 && var3 == 255 && var4 == 238) {
  401.             return "image/jpg";
  402.          } else if (var1 == 82 && var2 == 73 && var3 == 70 && var4 == 70) {
  403.             return "audio/x-wav";
  404.          } else if (var1 == 208 && var2 == 207 && var3 == 17 && var4 == 224 && var5 == 161 && var6 == 177 && var7 == 26 && var8 == 225 && checkfpx(var0)) {
  405.             return "image/vnd.fpx";
  406.          } else {
  407.             return null;
  408.          }
  409.       }
  410.    }
  411.  
  412.    private static boolean checkfpx(InputStream var0) throws IOException {
  413.       var0.mark(256);
  414.       long var1 = 28L;
  415.  
  416.       long var3;
  417.       for(var3 = 0L; var3 != var1; var3 += var0.skip(var1 - var3)) {
  418.       }
  419.  
  420.       int var7 = var0.read();
  421.       var0.read();
  422.       long var5 = var3 + 2L;
  423.       int var19;
  424.       if (var7 == 254) {
  425.          var19 = var0.read();
  426.          var19 += var0.read() << 8;
  427.       } else {
  428.          var19 = var0.read() << 8;
  429.          var19 += var0.read();
  430.       }
  431.  
  432.       var5 += 2L;
  433.       var1 = 48L - var5;
  434.  
  435.       for(var3 = 0L; var3 != var1; var3 += var0.skip(var1 - var3)) {
  436.       }
  437.  
  438.       var5 += var3;
  439.       int var23;
  440.       if (var7 == 254) {
  441.          var23 = var0.read();
  442.          var23 += var0.read() << 8;
  443.          var23 += var0.read() << 16;
  444.          var23 += var0.read() << 24;
  445.       } else {
  446.          var23 = var0.read() << 24;
  447.          var23 += var0.read() << 16;
  448.          var23 += var0.read() << 8;
  449.          var23 += var0.read();
  450.       }
  451.  
  452.       var5 += 4L;
  453.       var0.reset();
  454.       var1 = 512L + (long)(1 << var19) * (long)var23 + 80L;
  455.       var0.mark((int)var1 + 48);
  456.  
  457.       for(long var15 = 0L; var15 != var1; var15 += var0.skip(var1 - var15)) {
  458.       }
  459.  
  460.       int[] var10 = new int[16];
  461.  
  462.       for(int var11 = 0; var11 < 16; ++var11) {
  463.          var10[var11] = var0.read();
  464.       }
  465.  
  466.       if (var7 == 254 && var10[0] == 0 && var10[2] == 97 && var10[3] == 86 && var10[4] == 84 && var10[5] == 193 && var10[6] == 206 && var10[7] == 17 && var10[8] == 133 && var10[9] == 83 && var10[10] == 0 && var10[11] == 170 && var10[12] == 0 && var10[13] == 161 && var10[14] == 249 && var10[15] == 91) {
  467.          var0.reset();
  468.          return true;
  469.       } else if (var10[3] == 0 && var10[1] == 97 && var10[0] == 86 && var10[5] == 84 && var10[4] == 193 && var10[7] == 206 && var10[6] == 17 && var10[8] == 133 && var10[9] == 83 && var10[10] == 0 && var10[11] == 170 && var10[12] == 0 && var10[13] == 161 && var10[14] == 249 && var10[15] == 91) {
  470.          var0.reset();
  471.          return true;
  472.       } else {
  473.          var0.reset();
  474.          return false;
  475.       }
  476.    }
  477.  
  478.    // $FF: synthetic method
  479.    static FileNameMap access$000() {
  480.       return fileNameMap;
  481.    }
  482. }
  483.