/** * Add to or set a field. If the field is allowed to have multiple values, add will add multiple * headers of the same name. * * @param name the name of the field * @param value the value of the field. * @exception IllegalArgumentException If the name is a single valued field and already has a * value. */ public void add(Buffer name, Buffer value) throws IllegalArgumentException { if (value == null) throw new IllegalArgumentException("null value"); if (!(name instanceof CachedBuffer)) name = HttpHeaders.CACHE.lookup(name); name = name.asImmutableBuffer(); if (!(value instanceof CachedBuffer) && HttpHeaderValues.hasKnownValues(HttpHeaders.CACHE.getOrdinal(name))) value = HttpHeaderValues.CACHE.lookup(value); value = value.asImmutableBuffer(); Field field = _names.get(name); Field last = null; while (field != null) { last = field; field = field._next; } // create the field field = new Field(name, value); _fields.add(field); // look for chain to add too if (last != null) last._next = field; else _names.put(name, field); }
/** * Remove a field. * * @param name */ public void remove(Buffer name) { if (!(name instanceof BufferCache.CachedBuffer)) name = HttpHeaders.CACHE.lookup(name); Field field = _names.remove(name); while (field != null) { _fields.remove(field); field = field._next; } }
/** * Set a field. * * @param name the name of the field * @param value the value of the field. If null the field is cleared. */ public void put(String name, String value) { if (value == null) remove(name); else { Buffer n = HttpHeaders.CACHE.lookup(name); Buffer v = convertValue(value); put(n, v); } }
/** * Set a field. * * @param name the name of the field * @param value the value of the field. If null the field is cleared. */ public void put(Buffer name, Buffer value) { remove(name); if (value == null) return; if (!(name instanceof BufferCache.CachedBuffer)) name = HttpHeaders.CACHE.lookup(name); if (!(value instanceof CachedBuffer)) value = HttpHeaderValues.CACHE.lookup(value).asImmutableBuffer(); // new value; Field field = new Field(name, value); _fields.add(field); _names.put(name, field); }
/** * Set a field. * * @param name the name of the field * @param list the List value of the field. If null the field is cleared. */ public void put(String name, List<?> list) { if (list == null || list.size() == 0) { remove(name); return; } Buffer n = HttpHeaders.CACHE.lookup(name); Object v = list.get(0); if (v != null) put(n, HttpHeaderValues.CACHE.lookup(v.toString())); else remove(n); if (list.size() > 1) { java.util.Iterator<?> iter = list.iterator(); iter.next(); while (iter.hasNext()) { v = iter.next(); if (v != null) put(n, HttpHeaderValues.CACHE.lookup(v.toString())); } } }
/** * Sets the value of a date field. * * @param name the field name * @param date the field date value */ public void addDateField(String name, long date) { String d = formatDate(date); Buffer n = HttpHeaders.CACHE.lookup(name); Buffer v = new ByteArrayBuffer(d); add(n, v); }
/** * Sets the value of a date field. * * @param name the field name * @param date the field date value */ public void putDateField(String name, long date) { Buffer n = HttpHeaders.CACHE.lookup(name); putDateField(n, date); }
/** * Sets the value of an long field. * * @param name the field name * @param value the field long value */ public void addLongField(String name, long value) { Buffer n = HttpHeaders.CACHE.lookup(name); Buffer v = BufferUtil.toBuffer(value); add(n, v); }
/** * Remove a field. * * @param name */ public void remove(String name) { remove(HttpHeaders.CACHE.lookup(name)); }
/** * Add to or set a field. If the field is allowed to have multiple values, add will add multiple * headers of the same name. * * @param name the name of the field * @param value the value of the field. * @exception IllegalArgumentException If the name is a single valued field and already has a * value. */ public void add(String name, String value) throws IllegalArgumentException { if (value == null) return; Buffer n = HttpHeaders.CACHE.lookup(name); Buffer v = convertValue(value); add(n, v); }
/** * Set a field. * * @param name the name of the field * @param value the value of the field. If null the field is cleared. */ public void put(Buffer name, String value) { Buffer n = HttpHeaders.CACHE.lookup(name); Buffer v = convertValue(value); put(n, v); }
/* ------------------------------------------------------------ */ public boolean containsKey(String name) { return _names.containsKey(HttpHeaders.CACHE.lookup(name)); }
/* ------------------------------------------------------------ */ private Field getField(Buffer name) { return _names.get(HttpHeaders.CACHE.lookup(name)); }
/* ------------------------------------------------------------ */ public int getNameOrdinal() { return HttpHeaders.CACHE.getOrdinal(_name); }