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);
}