Re: svn commit: r1671734 - in /commons/proper/lang/trunk/src: changes/ main/java/org/apache/commons/lang3/time/ test/java/org/apache/commons/lang3/reflect/ test/java/org/apache/commons/lang3/time/
Hello Charles, looks like things got missed up. The Log messages takes about LANG-1109, but LANG-1107 was added to changes.xml. Furthermore there is a change in FieldUtilsTest. How does this relate to either of the issues? Regards, Benedikt 2015-04-07 4:40 GMT+02:00 c...@apache.org: Author: chas Date: Tue Apr 7 02:40:49 2015 New Revision: 1671734 URL: http://svn.apache.org/r1671734 Log: LANG-1109 - Number percentage formatting with fractional digits 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/reflect/FieldUtilsTest.java commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.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=1671734r1=1671733r2=1671734view=diff == --- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original) +++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Tue Apr 7 02:40:49 2015 @@ -22,7 +22,7 @@ body release version=3.5 date=tba description=tba - +action issue=LANG-1107 type=update dev=chasFix parsing edge cases in FastDateParser/action /release release version=3.4 date=2014-04-06 description=Feature and bugfix release 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=1671734r1=1671733r2=1671734view=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 Tue Apr 7 02:40:49 2015 @@ -744,9 +744,13 @@ public class FastDateParser implements D /** * A strategy that handles a timezone field in the parsing pattern */ -private static class TimeZoneStrategy extends Strategy { - -private final String validTimeZoneChars; +static class TimeZoneStrategy extends Strategy { +private static final String RFC_822_TIME_ZONE = [+-]\\d{4}; +private static final String GMT_OPTION= GMT[+-]\\d{1,2}:\\d{2}; +// see http://www.iana.org/time-zones and http://cldr.unicode.org/translation/timezones +static final String TZ_DATABASE= (?:\\p{L}[\\p{L}\\p{Mc}\\p{Nd}\\p{Zs}\\p{P}[^-]]*-?\\p{Zs}?)*; +private static final String VALID_TZ = ((?iu)+RFC_822_TIME_ZONE+|+GMT_OPTION+|+TZ_DATABASE+); + private final SortedMapString, TimeZone tzNames= new TreeMapString, TimeZone(String.CASE_INSENSITIVE_ORDER); /** @@ -777,9 +781,6 @@ public class FastDateParser implements D TimeZoneStrategy(final Locale locale) { final String[][] zones = DateFormatSymbols.getInstance(locale).getZoneStrings(); for (final String[] zone : zones) { -if (zone[ID].startsWith(GMT)) { -continue; -} final TimeZone tz = TimeZone.getTimeZone(zone[ID]); if (!tzNames.containsKey(zone[LONG_STD])){ tzNames.put(zone[LONG_STD], tz); @@ -795,16 +796,7 @@ public class FastDateParser implements D tzNames.put(zone[SHORT_DST], tz); } } -} - -final StringBuilder sb= new StringBuilder(); -sb.append((GMT[+-]\\d{1,2}:\\d{2}).append('|'); -sb.append([+-]\\d{4}).append('|'); -for(final String id : tzNames.keySet()) { -escapeRegex(sb, id, false).append('|'); -} -sb.setCharAt(sb.length()-1, ')'); -validTimeZoneChars= sb.toString(); +} } /** @@ -812,7 +804,7 @@ public class FastDateParser implements D */ @Override boolean addRegex(final FastDateParser parser, final StringBuilder regex) { -regex.append(validTimeZoneChars); +regex.append(VALID_TZ); return true; } @@ -825,8 +817,8 @@ public class FastDateParser implements D if(value.charAt(0)=='+' || value.charAt(0)=='-') { tz= TimeZone.getTimeZone(GMT+value); } -else if(value.startsWith(GMT)) { -tz= TimeZone.getTimeZone(value); +else if(value.regionMatches(true, 0, GMT, 0, 3)) { +tz=
Re: svn commit: r1671734 - in /commons/proper/lang/trunk/src: changes/ main/java/org/apache/commons/lang3/time/ test/java/org/apache/commons/lang3/reflect/ test/java/org/apache/commons/lang3/time/
Benedikt, Expletive, I wasn't being careful. The changes to FieldUtilsTest are to allow test to pass under jacoco coverage. I will revert, add another JIRA, fix changed.xml, and split into two commits tonight. Chas On Apr 6, 2015, at 11:29 PM, Benedikt Ritter brit...@apache.org wrote: Hello Charles, looks like things got missed up. The Log messages takes about LANG-1109, but LANG-1107 was added to changes.xml. Furthermore there is a change in FieldUtilsTest. How does this relate to either of the issues? Regards, Benedikt 2015-04-07 4:40 GMT+02:00 c...@apache.org: Author: chas Date: Tue Apr 7 02:40:49 2015 New Revision: 1671734 URL: http://svn.apache.org/r1671734 Log: LANG-1109 - Number percentage formatting with fractional digits 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/reflect/FieldUtilsTest.java commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.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=1671734r1=1671733r2=1671734view=diff == --- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original) +++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Tue Apr 7 02:40:49 2015 @@ -22,7 +22,7 @@ body release version=3.5 date=tba description=tba - +action issue=LANG-1107 type=update dev=chasFix parsing edge cases in FastDateParser/action /release release version=3.4 date=2014-04-06 description=Feature and bugfix release 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=1671734r1=1671733r2=1671734view=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 Tue Apr 7 02:40:49 2015 @@ -744,9 +744,13 @@ public class FastDateParser implements D /** * A strategy that handles a timezone field in the parsing pattern */ -private static class TimeZoneStrategy extends Strategy { - -private final String validTimeZoneChars; +static class TimeZoneStrategy extends Strategy { +private static final String RFC_822_TIME_ZONE = [+-]\\d{4}; +private static final String GMT_OPTION= GMT[+-]\\d{1,2}:\\d{2}; +// see http://www.iana.org/time-zones and http://cldr.unicode.org/translation/timezones +static final String TZ_DATABASE= (?:\\p{L}[\\p{L}\\p{Mc}\\p{Nd}\\p{Zs}\\p{P}[^-]]*-?\\p{Zs}?)*; +private static final String VALID_TZ = ((?iu)+RFC_822_TIME_ZONE+|+GMT_OPTION+|+TZ_DATABASE+); + private final SortedMapString, TimeZone tzNames= new TreeMapString, TimeZone(String.CASE_INSENSITIVE_ORDER); /** @@ -777,9 +781,6 @@ public class FastDateParser implements D TimeZoneStrategy(final Locale locale) { final String[][] zones = DateFormatSymbols.getInstance(locale).getZoneStrings(); for (final String[] zone : zones) { -if (zone[ID].startsWith(GMT)) { -continue; -} final TimeZone tz = TimeZone.getTimeZone(zone[ID]); if (!tzNames.containsKey(zone[LONG_STD])){ tzNames.put(zone[LONG_STD], tz); @@ -795,16 +796,7 @@ public class FastDateParser implements D tzNames.put(zone[SHORT_DST], tz); } } -} - -final StringBuilder sb= new StringBuilder(); -sb.append((GMT[+-]\\d{1,2}:\\d{2}).append('|'); -sb.append([+-]\\d{4}).append('|'); -for(final String id : tzNames.keySet()) { -escapeRegex(sb, id, false).append('|'); -} -sb.setCharAt(sb.length()-1, ')'); -validTimeZoneChars= sb.toString(); +} } /** @@ -812,7 +804,7 @@ public class FastDateParser implements D */ @Override boolean addRegex(final FastDateParser parser, final StringBuilder regex) { -regex.append(validTimeZoneChars); +regex.append(VALID_TZ); return true; } @@ -825,8 +817,8 @@ public class FastDateParser implements D