Author: markt
Date: Thu May 22 14:21:38 2014
New Revision: 1596888

URL: http://svn.apache.org/r1596888
Log:
Apply patch 12 from jboynes to improve cookie handling.
Move header-specific parsing code into a separate class associated with that 
header type. This is in anticipation of adding new header parsers, starting 
with Cookie
The patch should be safe since the logic is unchanged.

Added:
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java   
(with props)
Modified:
    tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java
    tomcat/trunk/java/org/apache/coyote/Response.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaType.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaTypeCache.java
    
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAuthorizationDigest.java
    tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestMediaType.java

Modified: 
tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java 
(original)
+++ 
tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java 
Thu May 22 14:21:38 2014
@@ -35,7 +35,7 @@ import org.apache.catalina.util.Concurre
 import org.apache.catalina.util.MD5Encoder;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.http.parser.HttpParser;
+import org.apache.tomcat.util.http.parser.Authorization;
 
 
 /**
@@ -493,7 +493,7 @@ public class DigestAuthenticator extends
 
             Map<String,String> directives;
             try {
-                directives = HttpParser.parseAuthorizationDigest(
+                directives = Authorization.parseAuthorizationDigest(
                         new StringReader(authorization));
             } catch (IOException e) {
                 return false;

Modified: tomcat/trunk/java/org/apache/coyote/Response.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Response.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Response.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Response.java Thu May 22 14:21:38 2014
@@ -25,7 +25,6 @@ import javax.servlet.WriteListener;
 
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.http.MimeHeaders;
-import org.apache.tomcat.util.http.parser.HttpParser;
 import org.apache.tomcat.util.http.parser.MediaType;
 import org.apache.tomcat.util.res.StringManager;
 
@@ -451,7 +450,7 @@ public final class Response {
 
         MediaType m = null;
         try {
-             m = HttpParser.parseMediaType(new StringReader(type));
+             m = MediaType.parseMediaType(new StringReader(type));
         } catch (IOException e) {
             // Ignore - null test below handles this
         }

Added: tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java?rev=1596888&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java 
(added)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java Thu 
May 22 14:21:38 2014
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.util.http.parser;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Parser for an "Authorization" header.
+ */
+public class Authorization {
+
+    @SuppressWarnings("unused")  // Unused due to buggy client implementations
+    private static final Integer FIELD_TYPE_TOKEN = Integer.valueOf(0);
+    private static final Integer FIELD_TYPE_QUOTED_STRING = Integer.valueOf(1);
+    private static final Integer FIELD_TYPE_TOKEN_OR_QUOTED_STRING = 
Integer.valueOf(2);
+    private static final Integer FIELD_TYPE_LHEX = Integer.valueOf(3);
+    private static final Integer FIELD_TYPE_QUOTED_TOKEN = Integer.valueOf(4);
+
+    private static final Map<String,Integer> fieldTypes = new HashMap<>();
+
+    static {
+        // Digest field types.
+        // Note: These are more relaxed than RFC2617. This adheres to the
+        //       recommendation of RFC2616 that servers are tolerant of buggy
+        //       clients when they can be so without ambiguity.
+        fieldTypes.put("username", FIELD_TYPE_QUOTED_STRING);
+        fieldTypes.put("realm", FIELD_TYPE_QUOTED_STRING);
+        fieldTypes.put("nonce", FIELD_TYPE_QUOTED_STRING);
+        fieldTypes.put("digest-uri", FIELD_TYPE_QUOTED_STRING);
+        // RFC2617 says response is <">32LHEX<">. 32LHEX will also be accepted
+        fieldTypes.put("response", FIELD_TYPE_LHEX);
+        // RFC2617 says algorithm is token. <">token<"> will also be accepted
+        fieldTypes.put("algorithm", FIELD_TYPE_QUOTED_TOKEN);
+        fieldTypes.put("cnonce", FIELD_TYPE_QUOTED_STRING);
+        fieldTypes.put("opaque", FIELD_TYPE_QUOTED_STRING);
+        // RFC2617 says qop is token. <">token<"> will also be accepted
+        fieldTypes.put("qop", FIELD_TYPE_QUOTED_TOKEN);
+        // RFC2617 says nc is 8LHEX. <">8LHEX<"> will also be accepted
+        fieldTypes.put("nc", FIELD_TYPE_LHEX);
+
+    }
+
+    /**
+     * Parses an HTTP Authorization header for DIGEST authentication as per RFC
+     * 2617 section 3.2.2.
+     *
+     * @param input The header value to parse
+     *
+     * @return  A map of directives and values as {@link String}s or
+     *          <code>null</code> if a parsing error occurs. Although the
+     *          values returned are {@link String}s they will have been
+     *          validated to ensure that they conform to RFC 2617.
+     *
+     * @throws IllegalArgumentException If the header does not conform to RFC
+     *                                  2617
+     * @throws java.io.IOException If an error occurs while reading the input
+     */
+    public static Map<String,String> parseAuthorizationDigest (StringReader 
input)
+            throws IllegalArgumentException, IOException {
+
+        Map<String,String> result = new HashMap<>();
+
+        if (HttpParser.skipConstant(input, "Digest") != 
HttpParser.SkipConstantResult.FOUND) {
+            return null;
+        }
+        // All field names are valid tokens
+        String field = HttpParser.readToken(input);
+        if (field == null) {
+            return null;
+        }
+        while (!field.equals("")) {
+            if (HttpParser.skipConstant(input, "=") != 
HttpParser.SkipConstantResult.FOUND) {
+                return null;
+            }
+            String value;
+            Integer type = fieldTypes.get(field.toLowerCase(Locale.ENGLISH));
+            if (type == null) {
+                // auth-param = token "=" ( token | quoted-string )
+                type = FIELD_TYPE_TOKEN_OR_QUOTED_STRING;
+            }
+            switch (type.intValue()) {
+                case 0:
+                    // FIELD_TYPE_TOKEN
+                    value = HttpParser.readToken(input);
+                    break;
+                case 1:
+                    // FIELD_TYPE_QUOTED_STRING
+                    value = HttpParser.readQuotedString(input, false);
+                    break;
+                case 2:
+                    // FIELD_TYPE_TOKEN_OR_QUOTED_STRING
+                    value = HttpParser.readTokenOrQuotedString(input, false);
+                    break;
+                case 3:
+                    // FIELD_TYPE_LHEX
+                    value = HttpParser.readLhex(input);
+                    break;
+                case 4:
+                    // FIELD_TYPE_QUOTED_TOKEN
+                    value = HttpParser.readQuotedToken(input);
+                    break;
+                default:
+                    // Error
+                    throw new IllegalArgumentException("TODO i18n: Unsupported 
type");
+            }
+
+            if (value == null) {
+                return null;
+            }
+            result.put(field, value);
+
+            if (HttpParser.skipConstant(input, ",") == 
HttpParser.SkipConstantResult.NOT_FOUND) {
+                return null;
+            }
+            field = HttpParser.readToken(input);
+            if (field == null) {
+                return null;
+            }
+        }
+
+        return result;
+    }
+}

Propchange: 
tomcat/trunk/java/org/apache/tomcat/util/http/parser/Authorization.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java Thu 
May 22 14:21:38 2014
@@ -18,10 +18,6 @@ package org.apache.tomcat.util.http.pars
 
 import java.io.IOException;
 import java.io.StringReader;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Locale;
-import java.util.Map;
 
 /**
  * HTTP header value parser implementation. Parsing HTTP headers as per RFC2616
@@ -35,47 +31,14 @@ import java.util.Map;
  * assuming that wrapped header lines have already been unwrapped. (The Tomcat
  * header processing code does the unwrapping.)
  *
- * Provides parsing of the following HTTP header values as per RFC 2616:
- * - Authorization for DIGEST authentication
- * - MediaType (used for Content-Type header)
- *
- * Support for additional headers will be provided as required.
  */
 public class HttpParser {
 
-    @SuppressWarnings("unused")  // Unused due to buggy client implementations
-    private static final Integer FIELD_TYPE_TOKEN = Integer.valueOf(0);
-    private static final Integer FIELD_TYPE_QUOTED_STRING = Integer.valueOf(1);
-    private static final Integer FIELD_TYPE_TOKEN_OR_QUOTED_STRING = 
Integer.valueOf(2);
-    private static final Integer FIELD_TYPE_LHEX = Integer.valueOf(3);
-    private static final Integer FIELD_TYPE_QUOTED_TOKEN = Integer.valueOf(4);
-
-    private static final Map<String,Integer> fieldTypes = new HashMap<>();
-
     // Arrays used by isToken(), isHex()
     private static final boolean isToken[] = new boolean[128];
     private static final boolean isHex[] = new boolean[128];
 
     static {
-        // Digest field types.
-        // Note: These are more relaxed than RFC2617. This adheres to the
-        //       recommendation of RFC2616 that servers are tolerant of buggy
-        //       clients when they can be so without ambiguity.
-        fieldTypes.put("username", FIELD_TYPE_QUOTED_STRING);
-        fieldTypes.put("realm", FIELD_TYPE_QUOTED_STRING);
-        fieldTypes.put("nonce", FIELD_TYPE_QUOTED_STRING);
-        fieldTypes.put("digest-uri", FIELD_TYPE_QUOTED_STRING);
-        // RFC2617 says response is <">32LHEX<">. 32LHEX will also be accepted
-        fieldTypes.put("response", FIELD_TYPE_LHEX);
-        // RFC2617 says algorithm is token. <">token<"> will also be accepted
-        fieldTypes.put("algorithm", FIELD_TYPE_QUOTED_TOKEN);
-        fieldTypes.put("cnonce", FIELD_TYPE_QUOTED_STRING);
-        fieldTypes.put("opaque", FIELD_TYPE_QUOTED_STRING);
-        // RFC2617 says qop is token. <">token<"> will also be accepted
-        fieldTypes.put("qop", FIELD_TYPE_QUOTED_TOKEN);
-        // RFC2617 says nc is 8LHEX. <">8LHEX<"> will also be accepted
-        fieldTypes.put("nc", FIELD_TYPE_LHEX);
-
         // Setup the flag arrays
         for (int i = 0; i < 128; i++) {
             if (i < 32) {
@@ -98,134 +61,6 @@ public class HttpParser {
         }
     }
 
-    /**
-     * Parses an HTTP Authorization header for DIGEST authentication as per RFC
-     * 2617 section 3.2.2.
-     *
-     * @param input The header value to parse
-     *
-     * @return  A map of directives and values as {@link String}s or
-     *          <code>null</code> if a parsing error occurs. Although the
-     *          values returned are {@link String}s they will have been
-     *          validated to ensure that they conform to RFC 2617.
-     *
-     * @throws IllegalArgumentException If the header does not conform to RFC
-     *                                  2617
-     * @throws IOException If an error occurs while reading the input
-     */
-    public static Map<String,String> parseAuthorizationDigest (
-            StringReader input) throws IllegalArgumentException, IOException {
-
-        Map<String,String> result = new HashMap<>();
-
-        if (skipConstant(input, "Digest") != SkipConstantResult.FOUND) {
-            return null;
-        }
-        // All field names are valid tokens
-        String field = readToken(input);
-        if (field == null) {
-            return null;
-        }
-        while (!field.equals("")) {
-            if (skipConstant(input, "=") != SkipConstantResult.FOUND) {
-                return null;
-            }
-            String value = null;
-            Integer type = fieldTypes.get(field.toLowerCase(Locale.ENGLISH));
-            if (type == null) {
-                // auth-param = token "=" ( token | quoted-string )
-                type = FIELD_TYPE_TOKEN_OR_QUOTED_STRING;
-            }
-            switch (type.intValue()) {
-                case 0:
-                    // FIELD_TYPE_TOKEN
-                    value = readToken(input);
-                    break;
-                case 1:
-                    // FIELD_TYPE_QUOTED_STRING
-                    value = readQuotedString(input, false);
-                    break;
-                case 2:
-                    // FIELD_TYPE_TOKEN_OR_QUOTED_STRING
-                    value = readTokenOrQuotedString(input, false);
-                    break;
-                case 3:
-                    // FIELD_TYPE_LHEX
-                    value = readLhex(input);
-                    break;
-                case 4:
-                    // FIELD_TYPE_QUOTED_TOKEN
-                    value = readQuotedToken(input);
-                    break;
-                default:
-                    // Error
-                    throw new IllegalArgumentException(
-                            "TODO i18n: Unsupported type");
-            }
-
-            if (value == null) {
-                return null;
-            }
-            result.put(field, value);
-
-            if (skipConstant(input, ",") == SkipConstantResult.NOT_FOUND) {
-                return null;
-            }
-            field = readToken(input);
-            if (field == null) {
-                return null;
-            }
-        }
-
-        return result;
-    }
-
-    public static MediaType parseMediaType(StringReader input)
-            throws IOException {
-
-        // Type (required)
-        String type = readToken(input);
-        if (type == null || type.length() == 0) {
-            return null;
-        }
-
-        if (skipConstant(input, "/") == SkipConstantResult.NOT_FOUND) {
-            return null;
-        }
-
-        // Subtype (required)
-        String subtype = readToken(input);
-        if (subtype == null || subtype.length() == 0) {
-            return null;
-        }
-
-        LinkedHashMap<String,String> parameters = new LinkedHashMap<>();
-
-        SkipConstantResult lookForSemiColon = skipConstant(input, ";");
-        if (lookForSemiColon == SkipConstantResult.NOT_FOUND) {
-            return null;
-        }
-        while (lookForSemiColon == SkipConstantResult.FOUND) {
-            String attribute = readToken(input);
-
-            String value = "";
-            if (skipConstant(input, "=") == SkipConstantResult.FOUND) {
-                value = readTokenOrQuotedString(input, true);
-            }
-
-            if (attribute != null) {
-                parameters.put(attribute.toLowerCase(Locale.ENGLISH), value);
-            }
-
-            lookForSemiColon = skipConstant(input, ";");
-            if (lookForSemiColon == SkipConstantResult.NOT_FOUND) {
-                return null;
-            }
-        }
-
-        return new MediaType(type, subtype, parameters);
-    }
-
     public static String unquote(String input) {
         if (input == null || input.length() < 2 || input.charAt(0) != '"') {
             return input;
@@ -244,7 +79,7 @@ public class HttpParser {
         return result.toString();
     }
 
-    private static boolean isToken(int c) {
+    static boolean isToken(int c) {
         // Fast for correct values, slower for incorrect ones
         try {
             return isToken[c];
@@ -253,7 +88,7 @@ public class HttpParser {
         }
     }
 
-    private static boolean isHex(int c) {
+    static boolean isHex(int c) {
         // Fast for correct values, slower for incorrect ones
         try {
             return isHex[c];
@@ -263,8 +98,7 @@ public class HttpParser {
     }
 
     // Skip any LWS and return the next char
-    private static int skipLws(StringReader input, boolean withReset)
-            throws IOException {
+    static int skipLws(StringReader input, boolean withReset) throws 
IOException {
 
         if (withReset) {
             input.mark(1);
@@ -284,8 +118,7 @@ public class HttpParser {
         return c;
     }
 
-    private static SkipConstantResult skipConstant(StringReader input,
-            String constant) throws IOException {
+    static SkipConstantResult skipConstant(StringReader input, String 
constant) throws IOException {
         int len = constant.length();
 
         int c = skipLws(input, false);
@@ -310,7 +143,7 @@ public class HttpParser {
      *          available to read or <code>null</code> if data other than a
      *          token was found
      */
-    private static String readToken(StringReader input) throws IOException {
+    static String readToken(StringReader input) throws IOException {
         StringBuilder result = new StringBuilder();
 
         int c = skipLws(input, false);
@@ -334,8 +167,7 @@ public class HttpParser {
      *         quoted string was found or null if the end of data was reached
      *         before the quoted string was terminated
      */
-    private static String readQuotedString(StringReader input,
-            boolean returnQuoted) throws IOException {
+    static String readQuotedString(StringReader input, boolean returnQuoted) 
throws IOException {
 
         int c = skipLws(input, false);
 
@@ -370,8 +202,8 @@ public class HttpParser {
         return result.toString();
     }
 
-    private static String readTokenOrQuotedString(StringReader input,
-            boolean returnQuoted) throws IOException {
+    static String readTokenOrQuotedString(StringReader input, boolean 
returnQuoted)
+            throws IOException {
 
         // Go back so first non-LWS character is available to be read again
         int c = skipLws(input, true);
@@ -395,8 +227,7 @@ public class HttpParser {
      *         quoted token was found or null if the end of data was reached
      *         before a quoted token was terminated
      */
-    private static String readQuotedToken(StringReader input)
-            throws IOException {
+    static String readQuotedToken(StringReader input) throws IOException {
 
         StringBuilder result = new StringBuilder();
         boolean quoted = false;
@@ -447,8 +278,7 @@ public class HttpParser {
      * @return  the sequence of LHEX (minus any surrounding quotes) if any was
      *          found, or <code>null</code> if data other LHEX was found
      */
-    private static String readLhex(StringReader input)
-            throws IOException {
+    static String readLhex(StringReader input) throws IOException {
 
         StringBuilder result = new StringBuilder();
         boolean quoted = false;
@@ -491,7 +321,7 @@ public class HttpParser {
         }
     }
 
-    private static enum SkipConstantResult {
+    static enum SkipConstantResult {
         FOUND,
         NOT_FOUND,
         EOF

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaType.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaType.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaType.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaType.java Thu May 
22 14:21:38 2014
@@ -16,6 +16,8 @@
  */
 package org.apache.tomcat.util.http.parser;
 
+import java.io.IOException;
+import java.io.StringReader;
 import java.util.LinkedHashMap;
 import java.util.Locale;
 import java.util.Map;
@@ -29,15 +31,13 @@ public class MediaType {
     private volatile String noCharset;
     private volatile String withCharset;
 
-    protected MediaType(String type, String subtype,
-            LinkedHashMap<String,String> parameters) {
+    protected MediaType(String type, String subtype, 
LinkedHashMap<String,String> parameters) {
         this.type = type;
         this.subtype = subtype;
         this.parameters = parameters;
 
         String cs = parameters.get("charset");
-        if (cs != null && cs.length() > 0 &&
-                cs.charAt(0) == '"') {
+        if (cs != null && cs.length() > 0 && cs.charAt(0) == '"') {
             cs = HttpParser.unquote(cs);
         }
         this.charset = cs;
@@ -122,4 +122,57 @@ public class MediaType {
         }
         return noCharset;
     }
+
+    /**
+     * Parses a MediaType value, either from a HTTP header or from an 
application.
+     *
+     * @param input a reader over the header text
+     * @return a MediaType parsed from the input, or null if not valid
+     * @throws IOException if there was a problem reading the input
+     */
+    public static MediaType parseMediaType(StringReader input) throws 
IOException {
+
+        // Type (required)
+        String type = HttpParser.readToken(input);
+        if (type == null || type.length() == 0) {
+            return null;
+        }
+
+        if (HttpParser.skipConstant(input, "/") == 
HttpParser.SkipConstantResult.NOT_FOUND) {
+            return null;
+        }
+
+        // Subtype (required)
+        String subtype = HttpParser.readToken(input);
+        if (subtype == null || subtype.length() == 0) {
+            return null;
+        }
+
+        LinkedHashMap<String,String> parameters = new LinkedHashMap<>();
+
+        HttpParser.SkipConstantResult lookForSemiColon = 
HttpParser.skipConstant(input, ";");
+        if (lookForSemiColon == HttpParser.SkipConstantResult.NOT_FOUND) {
+            return null;
+        }
+        while (lookForSemiColon == HttpParser.SkipConstantResult.FOUND) {
+            String attribute = HttpParser.readToken(input);
+
+            String value = "";
+            if (HttpParser.skipConstant(input, "=") == 
HttpParser.SkipConstantResult.FOUND) {
+                value = HttpParser.readTokenOrQuotedString(input, true);
+            }
+
+            if (attribute != null) {
+                parameters.put(attribute.toLowerCase(Locale.ENGLISH), value);
+            }
+
+            lookForSemiColon = HttpParser.skipConstant(input, ";");
+            if (lookForSemiColon == HttpParser.SkipConstantResult.NOT_FOUND) {
+                return null;
+            }
+        }
+
+        return new MediaType(type, subtype, parameters);
+    }
+
 }

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaTypeCache.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaTypeCache.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaTypeCache.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/MediaTypeCache.java 
Thu May 22 14:21:38 2014
@@ -51,7 +51,7 @@ public class MediaTypeCache {
 
         MediaType m = null;
         try {
-            m = HttpParser.parseMediaType(new StringReader(input));
+            m = MediaType.parseMediaType(new StringReader(input));
         } catch (IOException e) {
             // Ignore - return null
         }

Modified: 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAuthorizationDigest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAuthorizationDigest.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAuthorizationDigest.java
 (original)
+++ 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAuthorizationDigest.java
 Thu May 22 14:21:38 2014
@@ -38,7 +38,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("mthornton", result.get("username"));
         Assert.assertEquals("optrak.com", result.get("realm"));
@@ -69,7 +69,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("mthornton", result.get("username"));
         Assert.assertEquals("optrak.com", result.get("realm"));
@@ -93,7 +93,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("mthornton", result.get("username"));
         Assert.assertEquals("auth", result.get("qop"));
@@ -107,7 +107,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("mthornton", result.get("username"));
         Assert.assertEquals("auth", result.get("qop"));
@@ -120,7 +120,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("00000001", result.get("nc"));
     }
@@ -131,7 +131,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("09abcdef", result.get("nc"));
     }
@@ -142,7 +142,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertEquals("00abcdef", result.get("nc"));
     }
@@ -153,7 +153,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
 
         Assert.assertNull(result);
     }
@@ -164,7 +164,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -174,7 +174,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -184,7 +184,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -194,7 +194,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertEquals("auth", result.get("qop"));
     }
 
@@ -204,7 +204,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertEquals("auth", result.get("qop"));
     }
 
@@ -214,7 +214,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -224,7 +224,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -234,7 +234,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -244,7 +244,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -254,7 +254,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -264,7 +264,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -274,7 +274,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -284,7 +284,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -294,7 +294,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertNull(result);
     }
 
@@ -306,7 +306,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertEquals("b", result.get("a"));
     }
 
@@ -318,7 +318,7 @@ public class TestAuthorizationDigest {
 
         StringReader input = new StringReader(header);
 
-        Map<String,String> result = HttpParser.parseAuthorizationDigest(input);
+        Map<String,String> result = 
Authorization.parseAuthorizationDigest(input);
         Assert.assertEquals("b", result.get("a"));
     }
 }

Modified: 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestMediaType.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestMediaType.java?rev=1596888&r1=1596887&r2=1596888&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestMediaType.java 
(original)
+++ tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestMediaType.java Thu 
May 22 14:21:38 2014
@@ -136,7 +136,7 @@ public class TestMediaType {
         sb.append(PARAM_TOKEN);
 
         StringReader sr = new StringReader(sb.toString());
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         assertEquals("foo/bar; charset=UTF-8; a=b", m.toString());
         assertEquals(CHARSET, m.getCharset());
@@ -151,7 +151,7 @@ public class TestMediaType {
         sb.append(PARAM_CHARSET_QUOTED);
 
         StringReader sr = new StringReader(sb.toString());
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         assertEquals(CHARSET_WS, m.getCharset());
         assertEquals(TYPES.replaceAll(" ", ""),
@@ -166,7 +166,7 @@ public class TestMediaType {
                 "Type=\"application/smil;charset=UTF-8\"";
 
         StringReader sr = new StringReader(input);
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         // Check the types
         assertEquals("multipart", m.getType());
@@ -194,7 +194,7 @@ public class TestMediaType {
         String input = "text/html; UTF-8;charset=UTF-8";
 
         StringReader sr = new StringReader(input);
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         // Check the types
         assertEquals("text", m.getType());
@@ -217,7 +217,7 @@ public class TestMediaType {
         String input = "text/html;;charset=UTF-8";
 
         StringReader sr = new StringReader(input);
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         assertEquals("text", m.getType());
         assertEquals("html", m.getSubtype());
@@ -246,7 +246,7 @@ public class TestMediaType {
         }
 
         StringReader sr = new StringReader(sb.toString());
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         // Check all expected parameters are present
         assertTrue(m.getParameterCount() == parameters.length);
@@ -303,7 +303,7 @@ public class TestMediaType {
     @Test
     public void testCase() throws Exception {
         StringReader sr = new StringReader("type/sub-type;a=1;B=2");
-        MediaType m = HttpParser.parseMediaType(sr);
+        MediaType m = MediaType.parseMediaType(sr);
 
         Assert.assertEquals("1", m.getParameterValue("A"));
         Assert.assertEquals("1", m.getParameterValue("a"));



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to