/** * 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); }
/** * 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())); } } }
/** * 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); }
/* ------------------------------------------------------------ */ public int getValueOrdinal() { return HttpHeaderValues.CACHE.getOrdinal(_value); }
@Test public void testHttpHeaderValues() throws Exception { assertTrue(((CachedBuffer) HttpHeaderValues.CACHE.lookup("unknown value")).getOrdinal() < 0); assertTrue(((CachedBuffer) HttpHeaderValues.CACHE.lookup("close")).getOrdinal() >= 0); }