Author: markt
Date: Fri Aug 15 19:09:59 2014
New Revision: 1618260

URL: http://svn.apache.org/r1618260
Log:
Optimisation for invalid quality case suggested by kkolinko
Don't create return values that are going to be ignored

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/AcceptLanguage.java
    tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAcceptLanguage.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/http/parser/AcceptLanguage.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/AcceptLanguage.java?rev=1618260&r1=1618259&r2=1618260&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/AcceptLanguage.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/AcceptLanguage.java 
Fri Aug 15 19:09:59 2014
@@ -68,7 +68,9 @@ public class AcceptLanguage {
                 quality = HttpParser.readWeight(input, ',');
             }
 
-            result.add(new AcceptLanguage(Locale.forLanguageTag(languageTag), 
quality));
+            if (quality > 0) {
+                result.add(new 
AcceptLanguage(Locale.forLanguageTag(languageTag), quality));
+            }
         } while (true);
 
         return result;

Modified: 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAcceptLanguage.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAcceptLanguage.java?rev=1618260&r1=1618259&r2=1618260&view=diff
==============================================================================
--- 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAcceptLanguage.java 
(original)
+++ 
tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestAcceptLanguage.java 
Fri Aug 15 19:09:59 2014
@@ -31,7 +31,6 @@ public class TestAcceptLanguage {
     private static final double Q1_000 = 1;
     private static final double Q0_500 = 0.5;
     private static final double Q0_050 = 0.05;
-    private static final double Q0_000 = 0;
 
     @Test
     public void testSingle01() throws Exception {
@@ -153,56 +152,56 @@ public class TestAcceptLanguage {
 
     @Test
     public void testMalformed01() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;x=1"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;x=1,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test
     public void testMalformed02() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=a"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=a,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test
     public void testMalformed03() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.5a"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.5a,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test
     public void testMalformed04() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.05a"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.05a,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test
     public void testMalformed05() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.005a"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.005a,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test
     public void testMalformed06() throws Exception {
-        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.00005a"));
+        List<AcceptLanguage> actual = AcceptLanguage.parse(new 
StringReader("en-gb;q=0.00005a,en-gb;q=0.5"));
 
         Assert.assertEquals(1, actual.size());
         Assert.assertEquals(L_EN_GB, actual.get(0).getLocale());
-        Assert.assertEquals(Q0_000, actual.get(0).getQuality(), 0.0001);
+        Assert.assertEquals(Q0_500, actual.get(0).getQuality(), 0.0001);
     }
 
     @Test



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to