home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 March / maximum-cd-1999-03.iso / Feature / Lotus / ORGANIZE / COMPNENT / LTOUIN21.ZIP / sun / beanbox / MessageHeader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-12  |  3.7 KB  |  299 lines

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