Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 
 /*
  * LanguageParser.java February 2001
  *
  * Copyright (C) 2001, Niall Gallagher <niallg@users.sf.net>
  *
  * Licensed 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 divconq.www.http.parse;
 
 import java.util.List;
LanguageParser is used to parse the HTTP Accept-Language header. This takes in an Accept-Language header and parses it according the RFC 2616 BNF for the Accept-Language header. This also has the ability to sequence the language tokens in terms of the most preferred and the least preferred.

This uses the qvalues outlined by RFC 2616 to order the language tokens by preference. Typically the language tokens will not have qvalues with the language. However when a language tag has the qvalue parameter then this tag will be ordered based on the value of that parameter. A language tag without the qvalue parameter is considered to have a qvalue of 1 and is ordered accordingly.

Author(s):
Niall Gallagher
 
 public class LanguageParser extends ListParser<Locale> {

   
This is used to create a LanguageParser for the Accept-Language HTTP header value. This will parse a set of language tokens and there parameters. The languages will be ordered on preference. This constructor will parse the value given using parse(String).
 
    public LanguageParser() {
       super();
    }
   
   
This is used to create a LanguageParser for the Accept-Language HTTP header value. This will parse a set of language tokens and there parameters. The languages will be ordered on preference. This constructor will parse the value given using parse(String).

Parameters:
text value of a Accept-Language header
    
    public LanguageParser(String text) {
       super(text);
    }
   
   
This is used to create a LanguageParser for the Accept-Language HTTP header value. This will parse a set of language tokens and there parameters. The languages will be ordered on preference. This constructor will parse the value given using parse(String).

Parameters:
list value of a Accept-Language header
    
    public LanguageParser(List<Stringlist) {
       super(list);
    }
   
   
This creates a locale object using an offset and a length. The locale is created from the extracted token and the offset and length ensure that no leading or trailing whitespace are within the created locale object.

Parameters:
text this is the text buffer to acquire the value from
start the offset within the array to take characters
len this is the number of characters within the token
   protected Locale create(char[] textint startint len){
      String language = language(textstartlen);
      String country = country(textstartlen);
      
      return new Locale(languagecountry);
   }
   
   
This will extract the primary language tag from the header. This token is used to represent the language that will be available in the Locale object created.

Parameters:
text this is the text buffer to acquire the value from
start the offset within the array to take characters
len this is the number of characters within the token
   private String language(char[] textint startint len) {
      int mark = start;
      int size = 0;
      
      while(start < len) {
         char next = text[start];
         
         if(terminal(next)) {
            return new String(textmarksize);
         }
         size++;
         start++;
      }
      return new String(textmarklen);    
   }
   
   
This will extract the primary country tag from the header. This token is used to represent the country that will be available in the Locale object created.

Parameters:
text this is the text buffer to acquire the value from
start the offset within the array to take characters
len this is the number of characters within the token
   private String country(char[] textint startint len) {
      int size = len;
      
      while(start < len) {
         if(text[start++] == '-') {
            return new String(textstart, --size);
         }
         size--;
      }
      return "";
   }
   
   
This is used to determine whether the character provided is a terminal character. The terminal token is the value that is used to separate the country from the language and also any character the marks the end of the language token.

Parameters:
ch this is the character that is to be evaluated
Returns:
true if the character represents a terminal token
   private boolean terminal(char ch) {
      return ch ==' ' || ch == '-' || ch == ';';
   }
New to GrepCode? Check out our FAQ X