Package org.jboss.resteasy.util
Class ParameterParser
java.lang.Object
org.jboss.resteasy.util.ParameterParser
A simple parser intended to parse sequences of name/value pairs.
Parameter values are exptected to be enclosed in quotes if they
contain unsafe characters, such as '=' characters or separators.
Parameter values are optional and can be omitted.
param1 = value; param2 = "anything goes; really"; param3
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate char[]
String to be parsed.private int
Start of a token.private int
End of a token.private int
Maximum position in the string.private boolean
Whether names stored in the map should be converted to lower case.private int
Current position in the string. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate String
getToken
(boolean quoted) A helper method to process the parsed token.private boolean
hasChar()
Are there any characters left to parse?boolean
Returns true if parameter names are to be converted to lower case when name/value pairs are parsed.private boolean
isOneOf
(char ch, char[] charray) Tests if the given character is present in the array of characters.parse
(char[] chars, char separator) Extracts a map of name/value pairs from the given array of characters.parse
(char[] chars, int offset, int length, char separator) Extracts a map of name/value pairs from the given array of characters.Extracts a map of name/value pairs from the given string.private String
parseQuotedToken
(char[] terminators) Parses out a token until any of the given terminators is encountered outside the quotation marks.private String
parseToken
(char[] terminators) Parses out a token until any of the given terminators is encountered.setAttribute
(char[] chars, int offset, int length, char separator, String name, String value) Takes string as-is and only changes the value of a specific attribute.void
setLowerCaseNames
(boolean b) Sets the flag if parameter names are to be converted to lower case when name/value pairs are parsed.
-
Field Details
-
chars
private char[] charsString to be parsed. -
pos
private int posCurrent position in the string. -
len
private int lenMaximum position in the string. -
i1
private int i1Start of a token. -
i2
private int i2End of a token. -
lowerCaseNames
private boolean lowerCaseNamesWhether names stored in the map should be converted to lower case.
-
-
Constructor Details
-
ParameterParser
public ParameterParser()Default ParameterParser constructor.
-
-
Method Details
-
hasChar
private boolean hasChar()Are there any characters left to parse?- Returns:
- true if there are unparsed characters, false otherwise.
-
getToken
A helper method to process the parsed token. This method removes leading and trailing blanks as well as enclosing quotation marks, when necessary.- Parameters:
quoted
- true if quotation marks are expected, false otherwise.- Returns:
- the token
-
isOneOf
private boolean isOneOf(char ch, char[] charray) Tests if the given character is present in the array of characters.- Parameters:
ch
- the character to test for presense in the array of characterscharray
- the array of characters to test against- Returns:
- true if the character is present in the array of characters, false otherwise.
-
parseToken
Parses out a token until any of the given terminators is encountered.- Parameters:
terminators
- the array of terminating characters. Any of these characters when encountered signify the end of the token- Returns:
- the token
-
parseQuotedToken
Parses out a token until any of the given terminators is encountered outside the quotation marks.- Parameters:
terminators
- the array of terminating characters. Any of these characters when encountered outside the quotation marks signify the end of the token- Returns:
- the token
-
isLowerCaseNames
public boolean isLowerCaseNames()Returns true if parameter names are to be converted to lower case when name/value pairs are parsed.- Returns:
- true if parameter names are to be converted to lower case when name/value pairs are parsed. Otherwise returns false
-
setLowerCaseNames
public void setLowerCaseNames(boolean b) Sets the flag if parameter names are to be converted to lower case when name/value pairs are parsed.- Parameters:
b
- true if parameter names are to be converted to lower case when name/value pairs are parsed. false otherwise.
-
parse
Extracts a map of name/value pairs from the given string. Names are expected to be unique.- Parameters:
str
- the string that contains a sequence of name/value pairsseparator
- the name/value pairs separator- Returns:
- a map of name/value pairs
-
parse
Extracts a map of name/value pairs from the given array of characters. Names are expected to be unique.- Parameters:
chars
- the array of characters that contains a sequence of name/value pairsseparator
- the name/value pairs separator- Returns:
- a map of name/value pairs
-
parse
Extracts a map of name/value pairs from the given array of characters. Names are expected to be unique.- Parameters:
chars
- the array of characters that contains a sequence of name/value pairsoffset
- - the initial offset.length
- - the length.separator
- the name/value pairs separator- Returns:
- a map of name/value pairs
-
setAttribute
public String setAttribute(char[] chars, int offset, int length, char separator, String name, String value) Takes string as-is and only changes the value of a specific attribute.- Parameters:
chars
- the array of characters that contains a sequence of name/value pairsoffset
- - the initial offset.length
- - the length.separator
- the name/value pairs separator- Returns:
-