You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/11/16 15:15:01 UTC

svn commit: r595670 - /jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java

Author: olegk
Date: Fri Nov 16 06:15:01 2007
New Revision: 595670

URL: http://svn.apache.org/viewvc?rev=595670&view=rev
Log:
BasicHeaderParser#parseNameValuePair can now optionally take an arbitrary set of delimiters 

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java?rev=595670&r1=595669&r2=595670&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java Fri Nov 16 06:15:01 2007
@@ -73,6 +73,10 @@
 
     private final static char PARAM_DELIMITER                = ';';
     private final static char ELEM_DELIMITER                 = ',';
+    private final static char[] ALL_DELIMITERS               = new char[] {
+                                                                PARAM_DELIMITER, 
+                                                                ELEM_DELIMITER
+                                                                };  
     
     // public default constructor
 
@@ -294,6 +298,23 @@
     // non-javadoc, see interface HeaderValueParser
     public NameValuePair parseNameValuePair(final CharArrayBuffer buffer,
                                             final ParserCursor cursor) {
+        return parseNameValuePair(buffer, cursor, ALL_DELIMITERS);
+    }
+    
+    private static boolean isOneOf(final char ch, final char[] chs) {
+        if (chs != null) {
+            for (int i = 0; i < chs.length; i++) {
+                if (ch == chs[i]) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    public NameValuePair parseNameValuePair(final CharArrayBuffer buffer,
+                                            final ParserCursor cursor,
+                                            final char[] delimiters) {
 
         if (buffer == null) {
             throw new IllegalArgumentException("Char array buffer may not be null");
@@ -315,7 +336,7 @@
             if (ch == '=') {
                 break;
             }
-            if (ch == PARAM_DELIMITER || ch == ELEM_DELIMITER) {
+            if (isOneOf(ch, delimiters)) {
                 terminated = true;
                 break;
             }
@@ -346,8 +367,7 @@
             if (ch == '"' && !escaped) {
                 qouted = !qouted;
             }
-            if (!qouted && !escaped && 
-                    (ch == PARAM_DELIMITER || ch == ELEM_DELIMITER)) {
+            if (!qouted && !escaped && isOneOf(ch, delimiters)) {
                 terminated = true;
                 break;
             }