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