You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2012/09/27 02:09:16 UTC
svn commit: r1390779 - in /commons/proper/lang/trunk/src: changes/changes.xml
main/java/org/apache/commons/lang3/time/FastDateParser.java
test/java/org/apache/commons/lang3/time/FastDateParserTest.java
Author: sebb
Date: Thu Sep 27 00:09:15 2012
New Revision: 1390779
URL: http://svn.apache.org/viewvc?rev=1390779&view=rev
Log:
LANG-831 FastDateParser does not handle white-space properly
Modified:
commons/proper/lang/trunk/src/changes/changes.xml
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/FastDateParser.java
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserTest.java
Modified: commons/proper/lang/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1390779&r1=1390778&r2=1390779&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/changes/changes.xml (original)
+++ commons/proper/lang/trunk/src/changes/changes.xml Thu Sep 27 00:09:15 2012
@@ -22,6 +22,7 @@
<body>
<release version="3.2" date="TBA" description="Next release">
+ <action issue="LANG-831" type="fix">FastDateParser does not handle white-space properly</action>
<action issue="LANG-828" type="fix">FastDateParser does not handle non-Gregorian calendars properly</action>
<action issue="LANG-826" type="fix">FastDateParser does not handle non-ASCII digits correctly</action>
<action issue="LANG-825" type="add">Create StrBuilder APIs similar to String.format(String, Object...)</action>
Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/FastDateParser.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/FastDateParser.java?rev=1390779&r1=1390778&r2=1390779&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/FastDateParser.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/FastDateParser.java Thu Sep 27 00:09:15 2012
@@ -301,17 +301,8 @@ public class FastDateParser implements D
* @return The <code>StringBuilder</code>
*/
private static StringBuilder escapeRegex(StringBuilder regex, String value, boolean unquote) {
- boolean wasWhite= false;
for(int i= 0; i<value.length(); ++i) {
char c= value.charAt(i);
- if(Character.isWhitespace(c)) {
- if(!wasWhite) {
- wasWhite= true;
- regex.append("\\s*+");
- }
- continue;
- }
- wasWhite= false;
switch(c) {
case '\'':
if(unquote) {
Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserTest.java?rev=1390779&r1=1390778&r2=1390779&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserTest.java (original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserTest.java Thu Sep 27 00:09:15 2012
@@ -333,6 +333,52 @@ public class FastDateParserTest {
assertEquals(cal.getTime(), fdf.parse("'20030210A'B153320989'"));
}
+
+ @Test
+ public void testLANG_831() throws Exception {
+ testSdfAndFdp("M E","3 Tue", true);
+ }
+
+ private void testSdfAndFdp(String format, String date, boolean shouldFail)
+ throws Exception {
+ Date dfdp = null;
+ Date dsdf = null;
+ Throwable f = null;
+ Throwable s = null;
+
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
+ sdf.setTimeZone(NEW_YORK);
+ dsdf = sdf.parse(date);
+ if (shouldFail) {
+ Assert.fail("Expected SDF failure, but got " + dsdf + " for ["+format+","+date+"]");
+ }
+ } catch (Exception e) {
+ s = e;
+ if (!shouldFail) {
+ throw e;
+ }
+// System.out.println("sdf:"+format+"/"+date+"=>"+e);
+ }
+
+ try {
+ DateParser fdp = getInstance(format, NEW_YORK, Locale.US);
+ dfdp = fdp.parse(date);
+ if (shouldFail) {
+ Assert.fail("Expected FDF failure, but got " + dfdp + " for ["+format+","+date+"] using "+((FastDateParser)fdp).getParsePattern());
+ }
+ } catch (Exception e) {
+ f = e;
+ if (!shouldFail) {
+ throw e;
+ }
+// System.out.println("fdf:"+format+"/"+date+"=>"+e);
+ }
+ // SDF and FDF should produce equivalent results
+ assertTrue("Should both or neither throw Exceptions", (f==null)==(s==null));
+ assertEquals("Parsed dates should be equal", dsdf, dfdp);
+ }
+
@Test
public void testDayOf() throws ParseException {
Calendar cal= Calendar.getInstance(NEW_YORK, Locale.US);