Android

org.apache.http.message.BasicTokenIterator

java.lang.Object
org.apache.http.message.BasicTokenIterator TokenIterator

Basic implementation of a TokenIterator. This implementation parses #token sequences as defined by RFC 2616, section 2. It extends that definition somewhat beyond US-ASCII.

Summary

Constants

      Value  
String  HTTP_SEPARATORS  The HTTP separator characters.  " ,;=()<>@:\"/[]?{} " 

Fields

protected      String  currentHeader  The value of the current header. 
protected      String  currentToken  The token to be returned by the next call to currentToken
protected    final  HeaderIterator  headerIt  The iterator from which to obtain the next header. 
protected      int  searchPos  The position after currentToken in currentHeader

Public Constructors

            BasicTokenIterator(HeaderIterator headerIterator)
Creates a new instance of BasicTokenIterator.

Public Methods

          boolean  hasNext()
Indicates whether there is another token in this iteration.
    final      Object  next()
Returns the next token.
          String  nextToken()
Obtains the next token from this iteration.
    final      void  remove()
Removing tokens is not supported.

Protected Methods

          String  createToken(String value, int start, int end)
Creates a new token to be returned.
          int  findNext(int from)
Determines the next token.
          int  findTokenEnd(int from)
Determines the ending position of the current token.
          int  findTokenSeparator(int from)
Determines the position of the next token separator.
          int  findTokenStart(int from)
Determines the starting position of the next token.
          boolean  isHttpSeparator(char ch)
Checks whether a character is an HTTP separator.
          boolean  isTokenChar(char ch)
Checks whether a character is a valid token character.
          boolean  isTokenSeparator(char ch)
Checks whether a character is a token separator.
          boolean  isWhitespace(char ch)
Checks whether a character is a whitespace character.
Methods inherited from class java.lang.Object
Methods inherited from interface java.util.Iterator
Methods inherited from interface org.apache.http.TokenIterator

Details

Constants

public static final String HTTP_SEPARATORS

The HTTP separator characters. Defined in RFC 2616, section 2.2.
Constant Value: " ,;=()<>@:\"/[]?{} "

Fields

protected String currentHeader

The value of the current header. This is the header value that includes currentToken. Undefined if the iteration is over.

protected String currentToken

The token to be returned by the next call to currentToken. null if the iteration is over.

protected final HeaderIterator headerIt

The iterator from which to obtain the next header.

protected int searchPos

The position after currentToken in currentHeader. Undefined if the iteration is over.

Public Constructors

public BasicTokenIterator(HeaderIterator headerIterator)

Creates a new instance of BasicTokenIterator.

Parameters

headerIterator the iterator for the headers to tokenize

Public Methods

public boolean hasNext()

Indicates whether there is another token in this iteration.

public final Object next()

Returns the next token. Same as nextToken(), but with generic return type.

Returns

  • the next token in this iteration

Throws

NoSuchElementException if there are no more tokens
ParseException if an invalid header value is encountered

public String nextToken()

Obtains the next token from this iteration.

Returns

  • the next token in this iteration

Throws

NoSuchElementException if the iteration is already over
ParseException if an invalid header value is encountered

public final void remove()

Removing tokens is not supported.

Protected Methods

protected String createToken(String value, int start, int end)

Creates a new token to be returned. Called from findNext after the token is identified. The default implementation simply calls String.substring.
If header values are significantly longer than tokens, and some tokens are permanently referenced by the application, there can be problems with garbage collection. A substring will hold a reference to the full characters of the original string and therefore occupies more memory than might be expected. To avoid this, override this method and create a new string instead of a substring.

Parameters

value the full header value from which to create a token
start the index of the first token character
end the index after the last token character

Returns

  • a string representing the token identified by the arguments

protected int findNext(int from)

Determines the next token. If found, the token is stored in currentToken. The return value indicates the position after the token in currentHeader. If necessary, the next header will be obtained from headerIt. If not found, currentToken is set to null.

Parameters

from the position in the current header at which to start the search, -1 to search in the first header

Returns

  • the position after the found token in the current header, or negative if there was no next token

Throws

ParseException if an invalid header value is encountered

protected int findTokenEnd(int from)

Determines the ending position of the current token. This method will not leave the current header value, since the end of the header value is a token boundary.

Parameters

from the position of the first character of the token

Returns

  • the position after the last character of the token. The behavior is undefined if from does not point to a token character in the current header value.

protected int findTokenSeparator(int from)

Determines the position of the next token separator. Because of multi-header joining rules, the end of a header value is a token separator. This method does therefore not need to iterate over headers.

Parameters

from the position in the current header at which to start the search

Returns

  • the position of a token separator in the current header, or at the end

Throws

ParseException if a new token is found before a token separator. RFC 2616, section 2.1 explicitly requires a comma between tokens for #.

protected int findTokenStart(int from)

Determines the starting position of the next token. This method will iterate over headers if necessary.

Parameters

from the position in the current header at which to start the search

Returns

  • the position of the token start in the current header, negative if no token start could be found

protected boolean isHttpSeparator(char ch)

Checks whether a character is an HTTP separator. The implementation in this class checks only for the HTTP separators defined in RFC 2616, section 2.2. If you need to detect other separators beyond the US-ASCII character set, override this method.

Parameters

ch the character to check

Returns

  • true if the character is an HTTP separator

protected boolean isTokenChar(char ch)

Checks whether a character is a valid token character. Whitespace, control characters, and HTTP separators are not valid token characters. The HTTP specification (RFC 2616, section 2.2) defines tokens only for the US-ASCII character set, this method extends the definition to other character sets.

Parameters

ch the character to check

Returns

  • true if the character is a valid token start, false otherwise

protected boolean isTokenSeparator(char ch)

Checks whether a character is a token separator. RFC 2616, section 2.1 defines comma as the separator for #token sequences. The end of a header value will also separate tokens, but that is not a character check.

Parameters

ch the character to check

Returns

  • true if the character is a token separator, false otherwise

protected boolean isWhitespace(char ch)

Checks whether a character is a whitespace character. RFC 2616, section 2.2 defines space and horizontal tab as whitespace. The optional preceeding line break is irrelevant, since header continuation is handled transparently when parsing messages.

Parameters

ch the character to check

Returns

  • true if the character is whitespace, false otherwise
Copyright 2007 Google Inc. Build 0.9_r1-98467 - 14 Aug 2008 18:48