final HeaderElement[] elements =
httpHeader.getValues();
final StringBuffer newValue = new StringBuffer(
existing.getValue().length());
for (int i = 0; i < elements.length; i++) {
final HeaderElement element = elements[i];
// check if this element is a 2xx warning
if (isWarningElement(element, '2')) {
// append it to the new value of the
// header
if (newValue.length() > 0) {
newValue.append(',');
}
newValue.append(
HttpClientUtils.toString(element));
}
}
if (newValue.length() > 0) {
// create a new Header, replace the existing
// header with it
final Header newHeader = createHeader(
existing.getName(), newValue.toString());
final int index = headers.indexOf(existing);
headers.set(index, newHeader);
headersIter.set(newHeader);
} else {
headers.remove(existing);
headersIter.remove();
}
} catch (HttpException e) {
LOGGER.error("parse-header-error",
existing.getName(), e);
headers.remove(existing);
headersIter.remove();
}
} else {
headers.remove(existing);
headersIter.remove();
}
}
}
processedHeaders.add(name);
}
}
// remove 1xx warnings
if (!processedHeaders.contains("warning")) {
final List list = (List) headersMap.get("warning");
if (list != null) {
for (ListIterator iter = list.listIterator(); iter.hasNext(); ) {
final Header existing = (Header) iter.next();
// delete 1xx warnings
// need to split the header as it might contain a
// value list
org.apache.commons.httpclient.Header httpHeader =
new org.apache.commons.httpclient.Header(
existing.getName(), existing.getValue());
try {
final HeaderElement[] elements =
httpHeader.getValues();
final StringBuffer newValue =
new StringBuffer(existing.getValue().length());
for (int i = 0; i < elements.length; i++) {
final HeaderElement element = elements[i];
// check if this element is a 1xx warning
if (!isWarningElement(element, '1')) {
// append it to the new value of the header
if (newValue.length() > 0) {
newValue.append(',');