[
https://issues.apache.org/jira/browse/LANG-1833?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary D. Gregory resolved LANG-1833.
-----------------------------------
Fix Version/s: 3.21.0
Resolution: Fixed
> FastDateParser throws StringIndexOutOfBoundsException for invalid
> ParsePosition
> -------------------------------------------------------------------------------
>
> Key: LANG-1833
> URL: https://issues.apache.org/jira/browse/LANG-1833
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.time.*
> Reporter: Maksym Korshun
> Priority: Minor
> Fix For: 3.21.0
>
>
> FastDateParser does not consistently handle ParsePosition values that exceed
> the input length.
> The ParsePosition-based parse methods are documented
> ([javadoc|https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateParser.html#parse(java.lang.String,java.text.ParsePosition)])
> to return null or false
> for the Calendar overload and update the ParsePosition on parse failure.
> However, when the starting index is greater than the input length, some
> parsing
> strategies(Literal, Textual) throw StringIndexOutOfBoundsException instead.
> Example:
> {code:java}
> ParsePosition pos = new ParsePosition(10);
> DateParser parser = FastDateFormat.getInstance("MMM");
> parser.parse("Jan", pos);{code}
> Current behavior:
> * throws StringIndexOutOfBoundsException
> Expected behavior:
> - returns null
> - leaves ParsePosition.index unchanged
> - sets ParsePosition.errorIndex to the starting index
> The behavior currently depends on the parsing pattern. For example:
> - "MMM" throws StringIndexOutOfBoundsException
> - 'x' throws StringIndexOutOfBoundsException
> - "yyyy" correctly reports parse failure
--
This message was sent by Atlassian Jira
(v8.20.10#820010)