* values -- a null value deletes, non-null value replaces
*/
public Headers(Headers old, String[] keyval) { this(old.updateHeaders(keyval), false); }
+ public Headers(String[] keyval) { this(new Headers(), keyval); }
+ public Headers() { this(new String[0]); }
public Headers(Fountain fountain) throws Malformed { this(fountain, false); }
public Headers(Fountain fountain, boolean assumeMime) throws Malformed { this(extractEntries(fountain), assumeMime); }
for(Entry e : entries) {
String val = (String)head.get(e.key.toLowerCase());
val = val==null ? e.val.trim() : val+" "+e.val.trim(); // introduce folding whitespace =(
+ // FEATURE
//if (mime) k = Encode.RFC2047.decode(k);
//if (mime) v = Encode.RFC2047.decode(v);
head.put(e.key.toLowerCase(), val);
ArrayList<Entry> entries = new ArrayList<Entry>();
for(int i=0; i<this.entries.length; i++)
entries.add(this.entries[i]);
- for(int i=0; i<keyval.length; i+=2) {
+ OUTER: for(int i=0; i<keyval.length; i+=2) {
for(int j=0; j<entries.size(); j++) {
Entry e = entries.get(j);
- if (!e.key.toLowerCase().equals(keyval[i])) continue;
+ if (!e.key.toLowerCase().equals(keyval[i].toLowerCase())) continue;
if (keyval[i+1]==null)
entries.remove(j);
else
entries.set(j, new Entry(keyval[i], keyval[i+1]+"\r\n"));
- break;
+ continue OUTER;
}
if (keyval[i+1]!=null)
entries.add(0, new Entry(keyval[i], keyval[i+1]+"\r\n"));
// Helpers //////////////////////////////////////////////////////////////////////////////
public static Stream skip(Stream stream) {
- for(String s = stream.readln(); s!=null && s.length() > 0;) s = stream.readln();
+ for(String s = stream.readln(); s!=null && s.trim().length() > 0;)
+ s = stream.readln();
return stream;
}