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 / MessageHeader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.0 KB  |  312 lines

  1. package sun.net.www;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.PrintStream;
  6.  
  7. public class MessageHeader {
  8.    private String[] keys;
  9.    private String[] values;
  10.    private int nkeys;
  11.  
  12.    public MessageHeader() {
  13.       this.grow();
  14.    }
  15.  
  16.    public MessageHeader(InputStream var1) throws IOException {
  17.       this.parseHeader(var1);
  18.    }
  19.  
  20.    public String findValue(String var1) {
  21.       if (var1 == null) {
  22.          int var2 = this.nkeys;
  23.  
  24.          while(true) {
  25.             --var2;
  26.             if (var2 < 0) {
  27.                break;
  28.             }
  29.  
  30.             if (this.keys[var2] == null) {
  31.                return this.values[var2];
  32.             }
  33.          }
  34.       } else {
  35.          int var3 = this.nkeys;
  36.  
  37.          while(true) {
  38.             --var3;
  39.             if (var3 < 0) {
  40.                break;
  41.             }
  42.  
  43.             if (var1.equalsIgnoreCase(this.keys[var3])) {
  44.                return this.values[var3];
  45.             }
  46.          }
  47.       }
  48.  
  49.       return null;
  50.    }
  51.  
  52.    public String getKey(int var1) {
  53.       return var1 >= 0 && var1 < this.nkeys ? this.keys[var1] : null;
  54.    }
  55.  
  56.    public String getValue(int var1) {
  57.       return var1 >= 0 && var1 < this.nkeys ? this.values[var1] : null;
  58.    }
  59.  
  60.    public String findNextValue(String var1, String var2) {
  61.       boolean var3 = false;
  62.       if (var1 == null) {
  63.          int var4 = this.nkeys;
  64.  
  65.          while(true) {
  66.             --var4;
  67.             if (var4 < 0) {
  68.                break;
  69.             }
  70.  
  71.             if (this.keys[var4] == null) {
  72.                if (var3) {
  73.                   return this.values[var4];
  74.                }
  75.  
  76.                if (this.values[var4] == var2) {
  77.                   var3 = true;
  78.                }
  79.             }
  80.          }
  81.       } else {
  82.          int var5 = this.nkeys;
  83.  
  84.          while(true) {
  85.             --var5;
  86.             if (var5 < 0) {
  87.                break;
  88.             }
  89.  
  90.             if (var1.equalsIgnoreCase(this.keys[var5])) {
  91.                if (var3) {
  92.                   return this.values[var5];
  93.                }
  94.  
  95.                if (this.values[var5] == var2) {
  96.                   var3 = true;
  97.                }
  98.             }
  99.          }
  100.       }
  101.  
  102.       return null;
  103.    }
  104.  
  105.    public void print(PrintStream var1) {
  106.       for(int var2 = 0; var2 < this.nkeys; ++var2) {
  107.          if (this.keys[var2] != null) {
  108.             var1.print(this.keys[var2] + (this.values[var2] != null ? ": " + this.values[var2] : "") + "\r\n");
  109.          }
  110.       }
  111.  
  112.       var1.print("\r\n");
  113.       var1.flush();
  114.    }
  115.  
  116.    public void add(String var1, String var2) {
  117.       this.grow();
  118.       this.keys[this.nkeys] = var1;
  119.       this.values[this.nkeys] = var2;
  120.       ++this.nkeys;
  121.    }
  122.  
  123.    public void prepend(String var1, String var2) {
  124.       this.grow();
  125.  
  126.       for(int var3 = this.nkeys; var3 > 0; --var3) {
  127.          this.keys[var3] = this.keys[var3 - 1];
  128.          this.values[var3] = this.values[var3 - 1];
  129.       }
  130.  
  131.       this.keys[0] = var1;
  132.       this.values[0] = var2;
  133.       ++this.nkeys;
  134.    }
  135.  
  136.    public void set(int var1, String var2, String var3) {
  137.       this.grow();
  138.       if (var1 >= 0) {
  139.          if (var1 > this.nkeys) {
  140.             this.add(var2, var3);
  141.          } else {
  142.             this.keys[var1] = var2;
  143.             this.values[var1] = var3;
  144.          }
  145.  
  146.       }
  147.    }
  148.  
  149.    private void grow() {
  150.       if (this.keys == null || this.nkeys >= this.keys.length) {
  151.          String[] var1 = new String[this.nkeys + 4];
  152.          String[] var2 = new String[this.nkeys + 4];
  153.          if (this.keys != null) {
  154.             System.arraycopy(this.keys, 0, var1, 0, this.nkeys);
  155.          }
  156.  
  157.          if (this.values != null) {
  158.             System.arraycopy(this.values, 0, var2, 0, this.nkeys);
  159.          }
  160.  
  161.          this.keys = var1;
  162.          this.values = var2;
  163.       }
  164.  
  165.    }
  166.  
  167.    public void set(String var1, String var2) {
  168.       int var3 = this.nkeys;
  169.  
  170.       do {
  171.          --var3;
  172.          if (var3 < 0) {
  173.             this.add(var1, var2);
  174.             return;
  175.          }
  176.       } while(!var1.equalsIgnoreCase(this.keys[var3]));
  177.  
  178.       this.values[var3] = var2;
  179.    }
  180.  
  181.    public void setIfNotSet(String var1, String var2) {
  182.       if (this.findValue(var1) == null) {
  183.          this.add(var1, var2);
  184.       }
  185.  
  186.    }
  187.  
  188.    public static String canonicalID(String var0) {
  189.       if (var0 == null) {
  190.          return "";
  191.       } else {
  192.          int var1 = 0;
  193.          int var2 = var0.length();
  194.  
  195.          boolean var3;
  196.          char var4;
  197.          for(var3 = false; var1 < var2 && ((var4 = var0.charAt(var1)) == '<' || var4 <= ' '); var3 = true) {
  198.             ++var1;
  199.          }
  200.  
  201.          while(var1 < var2 && ((var4 = var0.charAt(var2 - 1)) == '>' || var4 <= ' ')) {
  202.             --var2;
  203.             var3 = true;
  204.          }
  205.  
  206.          return var3 ? var0.substring(var1, var2) : var0;
  207.       }
  208.    }
  209.  
  210.    public void parseHeader(InputStream var1) throws IOException {
  211.       this.nkeys = 0;
  212.       this.mergeHeader(var1);
  213.    }
  214.  
  215.    public void mergeHeader(InputStream var1) throws IOException {
  216.       if (var1 != null) {
  217.          char[] var2 = new char[10];
  218.  
  219.          String var9;
  220.          String var11;
  221.          for(int var3 = var1.read(); var3 != 10 && var3 != 13 && var3 >= 0; this.add(var11, var9)) {
  222.             int var4 = 0;
  223.             int var5 = -1;
  224.             boolean var7 = var3 > 32;
  225.             var2[var4++] = (char)var3;
  226.  
  227.             label104:
  228.             while(true) {
  229.                int var6;
  230.                if ((var6 = var1.read()) < 0) {
  231.                   var3 = -1;
  232.                   break;
  233.                }
  234.  
  235.                switch (var6) {
  236.                   case 9:
  237.                      var6 = 32;
  238.                   case 32:
  239.                      var7 = false;
  240.                      break;
  241.                   case 10:
  242.                   case 13:
  243.                      var3 = var1.read();
  244.                      if (var6 == 13 && var3 == 10) {
  245.                         var3 = var1.read();
  246.                         if (var3 == 13) {
  247.                            var3 = var1.read();
  248.                         }
  249.                      }
  250.  
  251.                      if (var3 == 10 || var3 == 13 || var3 > 32) {
  252.                         break label104;
  253.                      }
  254.  
  255.                      var6 = 32;
  256.                      break;
  257.                   case 58:
  258.                      if (var7 && var4 > 0) {
  259.                         var5 = var4;
  260.                      }
  261.  
  262.                      var7 = false;
  263.                }
  264.  
  265.                if (var4 >= var2.length) {
  266.                   char[] var8 = new char[var2.length * 2];
  267.                   System.arraycopy(var2, 0, var8, 0, var4);
  268.                   var2 = var8;
  269.                }
  270.  
  271.                var2[var4++] = (char)var6;
  272.             }
  273.  
  274.             while(var4 > 0 && var2[var4 - 1] <= ' ') {
  275.                --var4;
  276.             }
  277.  
  278.             if (var5 <= 0) {
  279.                var11 = null;
  280.                var5 = 0;
  281.             } else {
  282.                var11 = String.copyValueOf(var2, 0, var5);
  283.                if (var5 < var4 && var2[var5] == ':') {
  284.                   ++var5;
  285.                }
  286.  
  287.                while(var5 < var4 && var2[var5] <= ' ') {
  288.                   ++var5;
  289.                }
  290.             }
  291.  
  292.             if (var5 >= var4) {
  293.                var9 = new String();
  294.             } else {
  295.                var9 = String.copyValueOf(var2, var5, var4 - var5);
  296.             }
  297.          }
  298.  
  299.       }
  300.    }
  301.  
  302.    public String toString() {
  303.       String var1 = super.toString();
  304.  
  305.       for(int var2 = 0; var2 < this.keys.length; ++var2) {
  306.          var1 = var1 + "{" + this.keys[var2] + ": " + this.values[var2] + "}";
  307.       }
  308.  
  309.       return var1;
  310.    }
  311. }
  312.