in src/main/java/org/apache/sling/engine/impl/log/RequestLoggerResponse.java [313:341]
private void registerHeader(String name, String value, boolean add) {
// ensure the headers map
if (this.headers == null) {
this.headers = new HashMap<String, Object>();
}
// normalize header name to lower case to support case-insensitive
// headers
name = name.toLowerCase();
// retrieve the current contents if adding, otherwise assume no current
Object current = add ? this.headers.get(name) : null;
if (current == null) {
// set the single value (forced if !add)
this.headers.put(name, value);
} else if (current instanceof String) {
// create list if a single value is already set
List<String> list = new ArrayList<String>();
list.add((String) current);
list.add(value);
this.headers.put(name, list);
} else {
// append to the list of more than one already set
((List<Object>) current).add(value);
}
}