private void parseAcceptLanguage()

in velocity-tools-view/src/main/java/org/apache/velocity/tools/view/BrowserTool.java [565:619]


    private void parseAcceptLanguage()
    {
        if(languageRangesByQuality != null)
        {
            // already done
            return;
        }

        languageRangesByQuality = new TreeMap<Float,List<String>>();
        StringTokenizer languageTokenizer = new StringTokenizer(acceptLanguage, ",");
        while (languageTokenizer.hasMoreTokens())
        {
            String language = languageTokenizer.nextToken().trim();
            int qValueIndex = language.indexOf(';');
            if(qValueIndex == -1)
            {
                language = language.replace('-','_');
                List<String> l = languageRangesByQuality.get(1.0f);
                if(l == null)
                {
                    l = new ArrayList<String>();
                    languageRangesByQuality.put(1.0f,l);
                }
                l.add(language);
            }
            else
            {
                String code = language.substring(0,qValueIndex).trim().replace('-','_');
                String qval = language.substring(qValueIndex + 1).trim();
                if("*".equals(qval))
                {
                    starLanguageRange = code;
                }
                else
                {
                    Matcher m = quality.matcher(qval);
                    if(m.matches())
                    {
                        Float q = Float.valueOf(m.group(1));
                        List<String> al = languageRangesByQuality.get(q);
                        if(al == null)
                        {
                            al = new ArrayList<String>();
                            languageRangesByQuality.put(q,al);
                        }
                        al.add(code);
                    }
                    else
                    {
                        getLog().error("BrowserTool: could not parse language quality value: {}", language);
                    }
                }
            }
        }
    }