Index: module-main/src/main/java/org/apache/http/message/BasicHeader.java =================================================================== --- module-main/src/main/java/org/apache/http/message/BasicHeader.java (revision 584564) +++ module-main/src/main/java/org/apache/http/message/BasicHeader.java (working copy) @@ -74,6 +74,12 @@ * Header value. */ private final String value; + + /** + * The parser for the header value, or null. + */ + private HeaderValueParser parser; + /** * Constructor with name and value @@ -123,17 +129,30 @@ * * @see BasicHeaderValueParser#parseElements * - * @return an array of header elements + * @return an array of header elements, empty if the value is empty * * @throws ParseException in case of a parse error */ public HeaderElement[] getElements() throws ParseException { if (this.value != null) { - // result intentionally not cached, it's probably not used again - return BasicHeaderValueParser.parseElements(this.value, null); + // result intentionally not cached + // it's probably not used again, and the parser may change + return BasicHeaderValueParser.parseElements(this.value, + this.parser); } else { return new HeaderElement[] {}; } } + + // non-javadoc, see interface Header + public HeaderValueParser getParser() { + return this.parser; + } + + // non-javadoc, see interface Header + public void setParser(HeaderValueParser parser) { + this.parser = parser; + } + } Index: module-main/src/main/java/org/apache/http/Header.java =================================================================== --- module-main/src/main/java/org/apache/http/Header.java (revision 584564) +++ module-main/src/main/java/org/apache/http/Header.java (working copy) @@ -31,6 +31,9 @@ package org.apache.http; +import org.apache.http.message.HeaderValueParser; + + /** * Represents an HTTP header field. * @@ -60,5 +63,22 @@ String getValue(); HeaderElement[] getElements() throws ParseException; - + + + /** + * Obtains the parser that will be used by {@link #getElements}. + * + * @return the header value parser, or + * null for default behavior + */ + public HeaderValueParser getParser(); + + + /** + * Specifies the parser to be used by {@link #getElements}. + * + * @param parser the header value parser, or + * null for default behavior + */ + public void setParser(HeaderValueParser parser); }