home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Apps / OperawithJava / ow32enen700b1j.exe / OPERA.JAR / opera / OperaURLConnection.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-11-07  |  5.3 KB  |  256 lines

  1. package opera;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9. import java.util.Enumeration;
  10. import java.util.Hashtable;
  11.  
  12. public class OperaURLConnection extends HttpURLConnection {
  13.    // $FF: renamed from: is opera.OperaInputStream
  14.    private OperaInputStream field_0 = null;
  15.    private int istream_id = -1;
  16.    // $FF: renamed from: os opera.OperaOutputStream
  17.    private OperaOutputStream field_1 = null;
  18.    private int ostream_id = -1;
  19.    private Hashtable req_props = new Hashtable();
  20.    private Hashtable header_fields = new Hashtable();
  21.  
  22.    protected OperaURLConnection(URL var1) {
  23.       super(var1);
  24.    }
  25.  
  26.    public void connect() throws IOException {
  27.       if (!this.connected) {
  28.          String var1 = this.url.toString();
  29.          if (this.url.getPort() == -1) {
  30.             int var2 = var1.indexOf(":-1");
  31.             if (var2 != -1) {
  32.                StringBuffer var3 = new StringBuffer(var1);
  33.                var3.delete(var2, var2 + 3);
  34.                var1 = var3.toString();
  35.             }
  36.          }
  37.  
  38.          SecurityManager var14 = System.getSecurityManager();
  39.          if (var14 != null) {
  40.             var14.checkConnect(this.url.getHost(), this.url.getPort());
  41.          }
  42.  
  43.          try {
  44.             this.field_0 = new OperaInputStream(this);
  45.             this.field_1 = new OperaOutputStream(this);
  46.             this.istream_id = OperaInputStream.addStream(this.field_0);
  47.             this.ostream_id = OperaOutputStream.addStream(this.field_1);
  48.             this.field_1.istream_id = this.istream_id;
  49.             if (this.method.compareTo("POST") == 0) {
  50.                Object var15 = PluginContext.opera_mutex;
  51.                synchronized(var15) {
  52.                   this.nativeConnect(var1, this.method, this.ostream_id);
  53.                }
  54.  
  55.                this.connected = true;
  56.             } else if (this.method.compareTo("GET") == 0) {
  57.                Object var16 = PluginContext.opera_mutex;
  58.                synchronized(var16) {
  59.                   this.nativeConnect(var1, this.method, this.istream_id);
  60.                }
  61.  
  62.                try {
  63.                   OperaInputStream var5 = this.field_0;
  64.                   synchronized(var5) {
  65.                      if (!this.field_0.isHeaderLoaded()) {
  66.                         this.field_0.wait();
  67.                      }
  68.                   }
  69.                } catch (InterruptedException var10) {
  70.                   Thread.currentThread().interrupt();
  71.                }
  72.  
  73.                if (this.field_0.getResponse() != 200) {
  74.                   this.connected = false;
  75.                } else {
  76.                   this.connected = true;
  77.                }
  78.             } else {
  79.                OperaInputStream var17 = this.field_0;
  80.                synchronized(var17) {
  81.                   this.field_0.headerLoaded(0, 200);
  82.                   this.field_0.setEOF();
  83.                }
  84.             }
  85.          } catch (Exception var13) {
  86.             var13.printStackTrace(System.err);
  87.          }
  88.  
  89.          if (!this.connected) {
  90.             throw new IOException("Connection failed.");
  91.          }
  92.       }
  93.  
  94.    }
  95.  
  96.    private native void nativeConnect(String var1, String var2, int var3);
  97.  
  98.    public InputStream getInputStream() throws IOException {
  99.       if (!this.connected) {
  100.          this.connect();
  101.       }
  102.  
  103.       if (this.method.compareTo("POST") == 0) {
  104.          if (!this.field_1.isClosed()) {
  105.             this.field_1.close();
  106.          }
  107.  
  108.          if (this.field_0.getResponse() == -1) {
  109.             try {
  110.                OperaInputStream var1 = this.field_0;
  111.                synchronized(var1) {
  112.                   this.field_0.wait();
  113.                }
  114.             } catch (InterruptedException var4) {
  115.                Thread.currentThread().interrupt();
  116.             }
  117.          }
  118.  
  119.          if (this.field_0.getResponse() != 200) {
  120.             this.connected = false;
  121.             throw new FileNotFoundException(this.url.toString());
  122.          }
  123.  
  124.          this.connected = true;
  125.       }
  126.  
  127.       return this.field_0;
  128.    }
  129.  
  130.    public String getContentType() {
  131.       return this.getHeaderField("content-type");
  132.    }
  133.  
  134.    public int getContentLength() {
  135.       if (!this.connected) {
  136.          try {
  137.             this.connect();
  138.          } catch (Exception var2) {
  139.          }
  140.       }
  141.  
  142.       return this.field_0 != null ? this.field_0.getContentLength() : 0;
  143.    }
  144.  
  145.    public String getContentEncoding() {
  146.       return this.getHeaderField("content-encoding");
  147.    }
  148.  
  149.    public OutputStream getOutputStream() throws IOException {
  150.       this.method = "POST";
  151.       if (!this.connected) {
  152.          this.connect();
  153.       }
  154.  
  155.       return this.field_1;
  156.    }
  157.  
  158.    public int getHeaderFieldInt(String var1, int var2) {
  159.       String var3 = this.getHeaderField(var1);
  160.       if (var3 != null) {
  161.          try {
  162.             return Integer.parseInt(var3);
  163.          } catch (NumberFormatException var5) {
  164.          }
  165.       }
  166.  
  167.       return var2;
  168.    }
  169.  
  170.    public String getHeaderField(int var1) {
  171.       if (var1 == 0) {
  172.       }
  173.  
  174.       for(Enumeration var2 = this.header_fields.elements(); var1 > 0 && var2.hasMoreElements(); --var1) {
  175.          Object var3 = var2.nextElement();
  176.          if (var1 == 1) {
  177.             return (String)var3;
  178.          }
  179.       }
  180.  
  181.       return null;
  182.    }
  183.  
  184.    public String getHeaderKey(int var1) {
  185.       if (var1 == 0) {
  186.       }
  187.  
  188.       for(Enumeration var2 = this.header_fields.keys(); var1 > 0 && var2.hasMoreElements(); --var1) {
  189.          Object var3 = var2.nextElement();
  190.          if (var1 == 1) {
  191.             return (String)var3;
  192.          }
  193.       }
  194.  
  195.       return null;
  196.    }
  197.  
  198.    public String getHeaderField(String var1) {
  199.       return (String)this.header_fields.get(var1.toLowerCase());
  200.    }
  201.  
  202.    public String getRequestProperty(String var1) {
  203.       return (String)this.req_props.get(var1);
  204.    }
  205.  
  206.    public void setRequestProperty(String var1, String var2) {
  207.       if (var1.compareToIgnoreCase("Content-length") != 0) {
  208.          this.req_props.put(var1, var2);
  209.       }
  210.  
  211.    }
  212.  
  213.    public void disconnect() {
  214.    }
  215.  
  216.    public boolean usingProxy() {
  217.       return false;
  218.    }
  219.  
  220.    protected void finalize() throws Throwable {
  221.       if (this.field_0 != null) {
  222.          this.field_0 = null;
  223.          OperaInputStream.removeStream(this.istream_id);
  224.       }
  225.  
  226.       if (this.field_1 != null) {
  227.          this.field_1 = null;
  228.          OperaOutputStream.removeStream(this.ostream_id);
  229.       }
  230.  
  231.       super.finalize();
  232.    }
  233.  
  234.    protected String makeExtraHeaders() {
  235.       String var1 = "";
  236.       Enumeration var2 = this.req_props.keys();
  237.       Enumeration var3 = this.req_props.elements();
  238.  
  239.       while(var2.hasMoreElements()) {
  240.          var1 = var1.concat((String)var2.nextElement());
  241.          String var4 = (String)var3.nextElement();
  242.          if (var4 != null) {
  243.             var1 = var1.concat(": " + var4 + "\r\n");
  244.          } else {
  245.             var1 = var1.concat("\r\n");
  246.          }
  247.       }
  248.  
  249.       return var1;
  250.    }
  251.  
  252.    protected void addHeader(String var1, String var2) {
  253.       this.header_fields.put(var1.toLowerCase(), var2);
  254.    }
  255. }
  256.