Esempio n. 1
0
 /**
  * Sets the value of a key. If the key already exists in the header, it's value will be changed.
  * Otherwise a new key/value pair will be added to the end of the header.
  */
 public synchronized void set(String k, String v) {
   for (int i = nkeys; --i >= 0; )
     if (k.equalsIgnoreCase(keys[i])) {
       values[i] = v;
       return;
     }
   add(k, v);
 }
Esempio n. 2
0
 /**
  * Overwrite the previous key/val pair at location 'i' with the new k/v. If the index didn't exist
  * before the key/val is simply tacked onto the end.
  */
 public synchronized void set(int i, String k, String v) {
   grow();
   if (i < 0) {
     return;
   } else if (i >= nkeys) {
     add(k, v);
   } else {
     keys[i] = k;
     values[i] = v;
   }
 }
Esempio n. 3
0
 /** Parse and merge a MIME header from an input stream. */
 @SuppressWarnings("fallthrough")
 public void mergeHeader(InputStream is) throws java.io.IOException {
   if (is == null) return;
   char s[] = new char[10];
   int firstc = is.read();
   while (firstc != '\n' && firstc != '\r' && firstc >= 0) {
     int len = 0;
     int keyend = -1;
     int c;
     boolean inKey = firstc > ' ';
     s[len++] = (char) firstc;
     parseloop:
     {
       while ((c = is.read()) >= 0) {
         switch (c) {
           case ':':
             if (inKey && len > 0) keyend = len;
             inKey = false;
             break;
           case '\t':
             c = ' ';
             /*fall through*/
           case ' ':
             inKey = false;
             break;
           case '\r':
           case '\n':
             firstc = is.read();
             if (c == '\r' && firstc == '\n') {
               firstc = is.read();
               if (firstc == '\r') firstc = is.read();
             }
             if (firstc == '\n' || firstc == '\r' || firstc > ' ') break parseloop;
             /* continuation */
             c = ' ';
             break;
         }
         if (len >= s.length) {
           char ns[] = new char[s.length * 2];
           System.arraycopy(s, 0, ns, 0, len);
           s = ns;
         }
         s[len++] = (char) c;
       }
       firstc = -1;
     }
     while (len > 0 && s[len - 1] <= ' ') len--;
     String k;
     if (keyend <= 0) {
       k = null;
       keyend = 0;
     } else {
       k = String.copyValueOf(s, 0, keyend);
       if (keyend < len && s[keyend] == ':') keyend++;
       while (keyend < len && s[keyend] <= ' ') keyend++;
     }
     String v;
     if (keyend >= len) v = new String();
     else v = String.copyValueOf(s, keyend, len - keyend);
     add(k, v);
   }
 }
Esempio n. 4
0
 /** Set's the value of a key only if there is no key with that value already. */
 public synchronized void setIfNotSet(String k, String v) {
   if (findValue(k) == null) {
     add(k, v);
   }
 }