things.data.processing.http
Class ResponseLineParserOLD

java.lang.Object
  extended by things.data.processing.LexicalTool
      extended by things.data.processing.http.ResponseLineParserOLD

public class ResponseLineParserOLD
extends LexicalTool

An HTTP Response Line parser. Uses the same method as the AddressParser.

Version:
1.0

Version History

EPG - Initial - 12 FEB 07
 
Author:
Erich P. Gatejen

Field Summary
 
Fields inherited from class things.data.processing.LexicalTool
ALLOWED, ASCII_HIGH, BAD, BREAKING, CHAR, CHAR_DNSCHAR, CHAR_DNSCHAR_NUMERIC, CHAR_DNSCHAR_POUND, CLASS_ALPHA, CLASS_CONTROL, CLASS_NONE, CLASS_NUMERIC, CLASS_PUNCTUATION, COLONVALUE, CONTROL, CRBYTEVALUE, DASHVALUE, DNSCHAR, DOLLARBYTEVALUE, HEADER_READ_STATE_CHART, HEADER_READ_STATE_CHARTV2, HP____SPECIAL_DEAD, HP____SPECIAL_PAUSE, HP____SPECIAL_WALKING_DEAD, HP_BROKEN, HP_CLEAR_PAUSE, HP_CLEAR_PAUSE_CRLF, HP_CLOSURE, HP_CR, HP_HEAD_CR, HP_HEAD_CRLF, HP_HEAD_LF, HP_LF, HP_LFCR, HP_NOT_USED, HP_PAUSE, HP_PAUSE_CRLF, HP_PAUSE_CRLFCR, HP_READ, HP_START, LEXICAL_HEADER_TERMINATION, LEXICAL_MAP, LEXICAL_MAP_822_HEADERNAME, LEXICAL_MAP_822_TYPE, LEXICAL_MAP_CLASSIFICATION, LEXICAL_MAP_DNS_TYPE, LEXICAL_MAP_HEXVALUE, LEXICAL_MAP_NAME, LEXICAL_MAP_URI_TYPE, LEXICAL_MAP_URLF_TYPE, LFBYTEVALUE, NO_CHARACTER, NOT_ALLOWED, OPENBBYTEVALUE, OTHER, PIPEBYTEVALUE, SLASHBYTEVALUE, SPACEVALUE, SPECIAL, SPECIAL_AMP, SPECIAL_AT, SPECIAL_BACKSLASH, SPECIAL_CHAR_DNSCHAR_DOT, SPECIAL_CLOSEBRACK, SPECIAL_CLOSEPAREN, SPECIAL_COLON, SPECIAL_COMMA, SPECIAL_DOLLAR, SPECIAL_EQ, SPECIAL_GT, SPECIAL_LT, SPECIAL_OPENBRACK, SPECIAL_OPENPAREN, SPECIAL_PERCENT, SPECIAL_PLUS, SPECIAL_QUEST, SPECIAL_QUOTE, SPECIAL_SEMICOLON, SPECIAL_SLASH, SPECIAL_SPLAT, STRING_CRLF, TABVALUE, URLCHAR, URLFCHAR, VALUE_ASCII_BOTTOM, VALUE_ASCII_HIGH_BOTTOM, VALUE_ASCII_HIGH_TOP, VALUE_ASCII_LOW_BOTTOM, VALUE_ASCII_LOW_TOP, VALUE_ASCII_TOP, WS, WS_CR_CONTROL, WS_LF_CONTROL, WS_SPACE, WS_TAB_CONTROL
 
Constructor Summary
ResponseLineParserOLD()
           
 
Method Summary
 void parser(java.io.InputStream ins, HttpResponse response)
          Call with an InputStream.
 void parser(StreamSource source, HttpResponse response)
          Parse engine grammar.
 void parser(java.lang.String data, HttpResponse response)
          Call with a String.
 
Methods inherited from class things.data.processing.LexicalTool
get822HeadernameType, get822HeadernameTypeWithDollar, get822Type, getClassification, getDNSType, getHexValue, getLower, getName, getUpper, getURIType, getURLFType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResponseLineParserOLD

public ResponseLineParserOLD()
Method Detail

parser

public void parser(StreamSource source,
                   HttpResponse response)
            throws ThingsException
Parse engine grammar.
 HTTP/1.1 200 OK

Lexical elements:       
                URLCHAR = Letters (A-Z and a-z), numbers (0-9) and the characters '.', '-', '~' and '_', plus we treat # as a character because
                  we don't distinguish is for processing.
                WS = whitespace not including CR/LF
                SLASH = forward slash.
                !OTHER! (meaning anything not listed).

Registers
                Version                 - response.version
                Code                    - response.code
                Text                    - response.text

HTTP/1.1200OK...

[START]
        -> [OPEN]
        -> ^RETURN^

[OPEN]
        - URLCHAR       - push, VERSION, ^RETURN^
        - !OTHER!       - [DEPLETE], error(must start with a character)
        - !EOF!         - fault(No request present)

[VERSION]
        - URLCHAR       - push
        - SLASH         - push
        - WS            - pop->$Version, [CODE], ^RETURN^
        - !OTHER!       - [DEPLETE], error(expecting code)
        - !EOF!         - fault(Only VERSION present)   

[CODE]
        - URLCHAR       - push
        - WS            - pop->$Code, [TEXT], ^RETURN^
        - !OTHER!       - [DEPLETE], error(bad code)
        - !EOF!         - error(No TEXT present)                

[TEXT]
        - URLCHAR       - push
        - WS            - push
        - CR            - pop->$Text, [DEPLETE], ^RETURN^       
        - !OTHER!       - [DEPLETE], errorbad characters in Text.
        - !EOF!         - error(status line not terminated)                             

[DEPLETE]
        - CR            - [DEPLETE_CR], ^RETURN^
        - !OTHER!       - burn
        - !EOF!         - error(missing CR at end of line)

[DEPLETE_CR]
        - LF            - ^RETURN^
        - !EOF!         - error(missing LF after CR at end of line: truncated.)
        - !OTHER!       - fault(missing LF after CR at end of line: odd characters found, so stream is unreliable.)

Parameters:
source - the stream source.
response - the response object to fill.
Throws:
ThingsException - If it is a fault, the request should be considered completely invalid. If it is an error, whatever was set in the request might be useful.

parser

public void parser(java.io.InputStream ins,
                   HttpResponse response)
            throws ThingsException
Call with an InputStream.

Parameters:
ins - the source stream.
response - the response object to fill.
Throws:
ThingsException - If it is a fault, the request should be considered completely invalid. If it is an error, whatever was set in the request might be useful.

parser

public void parser(java.lang.String data,
                   HttpResponse response)
            throws ThingsException
Call with a String.

Parameters:
data - the String
response - the response object to fill.
Throws:
ThingsException - If it is a fault, the request should be considered completely invalid. If it is an error, whatever was set in the request might be useful.


Things.