6fdc0bf198c455cbe73ecf825bd0f8f985481066 |
|
30-Sep-2016 |
Neil Fuller <nfuller@google.com> |
Remove DateFormat time pattern caching This change removes pattern string caching from the SimpleDateFormat constructor only used by DateFormat.getInstance(). Before this change, the LocaleData.getTimeFormat(int) method that is used to populate the cached data can return different information for SHORT and MEDIUM times based on the DateFormat.is24Hour setting and so the results are not safe to cache: if the user modifies their "use 24-hour format" setting and the data is already cached the old pattern was persisted forever. This was also causing various CTS tests to fail if the device had the "use 24-hour format" setting on. For example: libcore.java.text.OldDateFormatTest org.apache.harmony.tests.java.text.MessageFormatTest org.apache.harmony.tests.java.util.DateTest Callers of java.text.DateFormat.get(int, int, int, Locale) are affected. In practice that means DateFormat.getTimeInstance() / getTimeInstance(int) and getTimeInstance(int, Locale). Indirect callers in the Android framework include: android.text.format.DateUtils android.text.format.DateFormat android.widget.DigitalClock java.text.MessageFormat This change has a small negative affect on performance, but not a significant one: obtaining a DateFormat via DateFormat.getTimeInstance() goes from ~28us to ~33us on an Angler device. Full results for the benchmarks included: Before: benchmarkMethod=timeGetDateTimeInstance runtime(ns): min=27518.68, 1st qu.=28461.12, median=28775.87, mean=28732.44, 3rd qu.=29235.59, max=29320.80 runtime(ns): min=28599.17, 1st qu.=28769.57, median=29277.13, mean=29682.69, 3rd qu.=29824.08, max=33419.06 benchmarkMethod=timeGetDateTimeInstance_multiple runtime(ns): min=108667.38, 1st qu.=110223.70, median=111547.98, mean=112173.89, 3rd qu.=113748.88, max=118091.12 runtime(ns): min=102995.66, 1st qu.=105045.16, median=108558.77, mean=108817.18, 3rd qu.=111677.65, max=115886.11 After: benchmarkMethod=timeGetDateTimeInstance runtime(ns): min=31365.39, 1st qu.=32904.01, median=33303.47, mean=33244.55, 3rd qu.=33983.32, max=34052.99 runtime(ns): min=31785.28, 1st qu.=32921.68, median=33364.01, mean=33531.03, 3rd qu.=34301.06, max=35031.33 benchmarkMethod=timeGetDateTimeInstance_multiple runtime(ns): min=126834.48, 1st qu.=128605.17, median=130069.44, mean=131157.63, 3rd qu.=134095.26, max=138164.92 runtime(ns): min=124618.08, 1st qu.=126097.91, median=130190.93, mean=130027.17, 3rd qu.=131991.56, max=140283.06 Bug: 31762542 Test: Ran CtsLibcoreTestCases with the "use 24-hour format" on and off Change-Id: I02798e8fcd2ed5f7625a32261112560b5d9b18f3
|
82c413526cc241290cc69170f28cac5213cf74ed |
|
25-Jul-2016 |
Joachim Sauer <jsauer@google.com> |
Fix standalone weekday parsing. Parsing standalone weekdays ('cccc') was treated the same way as "regular" weekdays ('EEEE') since N. This ensures that the correct names are used for parsing. This bug doesn't have any effect in most locales, as most either don't have a separate standalone version of the weekday or they only differ in casing. Also added a test for formatting standalone weekdays. It wasn't broken but also wasn't tested before. Tested: libcore/run-libcore-tests libcore.java.text.SimpleDateFormatTest org.apache.harmony.tests.java.text.SimpleDateFormatTest Bug: 30323478 (cherry picked from commit 91116215bcb3e903fc334eaf23898b0d8ece6924) Note that git merged the change wrong and it was manually corrected (passing "true" to parseWeekday for the standalone case). Change-Id: I7fff3d36b3f3838d5883341ed5eaf3488906f152
|
cdde6627c3b5fe67e086043cb789e88110a38028 |
|
18-Jul-2016 |
Joachim Sauer <jsauer@google.com> |
Fix time zone formatting with setZoneStrings(). User-defined time zone strings (using DateFormatSymbols.setZoneStrings()) were ignored since N. This make sure that formatting time zone names takes into account any values specified by the user. Also add a test to ensure that malformed arrays in setZoneStrings() are correctly rejected. Test: run cts -m CtsLibcoreTestCases --module-arg "CtsLibcoreTestCases:include-filter:libcore.java.text,org.apache.harmony.tests.java.text" Bug: 30155437 (cherry picked from commit d8bef3c23bf1851242cc2dc189edaa544eeabe58) Change-Id: Ie89d3a56c8a91f0d6d12da26490e16ed46095a0a
|
08db36e9a34896135e8b0883f65bde5b86ee90e6 |
|
25-Mar-2016 |
Narayan Kamath <narayan@google.com> |
SimpleDateFormat: Reset timezone after parse. This reverts to Android M behaviour, which happens to be more consistent and predictable. bug: 27760434 (cherry picked from commit 2015e08d682be61dacd76c51bb0345f357fc4e96) Change-Id: I67789bbc6d98c6a1d5816a119e3d9a379ff90ed6
|
d06c9ff1e64308978a6db2135d744613e396b65e |
|
18-Jan-2016 |
Narayan Kamath <narayan@google.com> |
Make SDF slightly more lenient about parsing zone strings. We tolerate a colon even formats that don't specify it. Also, the existing code for verifying that a colon exists has been rewritten for clarity. bug: 26426526 Change-Id: Iea4ef6be0174a86d31df7ad9b6636ef904991cea
|
2c87ad3a45cecf9e344487cad1abfdebe79f2c7c |
|
21-Dec-2015 |
Narayan Kamath <narayan@google.com> |
Update file headers. Change-Id: I8149f41585768a1a4b72ab7bb4a1452376c05cc2
|
afe86efb5d4b237c50df82b7dcb581d4d75b1132 |
|
01-Dec-2015 |
Narayan Kamath <narayan@google.com> |
More UTS#35 conformance. 'S' must be interpreted as a fractional second field. While it is loosely equivalent to milliseconds, it is not always so. For instance: "11.789045" seconds is 11 seconds and ~789 (not 789045) milliseconds. "11.79" seconds is 11 seconds and 790 (not 79) milliseconds. This change makes sure we deal with these values correctly. The behaviour for count === 3 (SSS, eg. "11.564" seconds) is unchanged. bug: 25863120 Change-Id: Idac94d7aafcdbdcd83ac561cf5895e5890cf8a56
|
00617c74e1f95fbe088f078341d607132575b0d6 |
|
02-Dec-2015 |
Narayan Kamath <narayan@google.com> |
Deal with CLDR abbreviations correctly. CLDR data for some locales contains abbreviated forms that end with a period ("Aug." for example). We should attempt to match those even when the input date doesn't end with a period. bug: 25863120 Change-Id: Id8cb14631b766f8286862488878ed11f359a3f00
|
d6c54ba7af74286d2e310703a4aa2c924ec85c99 |
|
01-Dec-2015 |
Narayan Kamath <narayan@google.com> |
Implement more of the UTS#35 spec. - Support for "tiny" weekdays and months (EEEEE and MMMMM) - Support for standalone weekdays and months. - Proper support for the 'Z' specifier (RFC-822 timezones) Also fixes a bug in how date+time patterns were generated and makes several unit tests clearer by using assertEquals instead of assertTrue. Fixes most of our DateFormat / SimpleDateFormat related tests. bug: 25859156 bug: 25863120 Change-Id: Ieec88a29ddbd8ea8076e8913dfad1330d7ad4c25
|
3822402ba5642bd60d5cd6305ceee73a613b4bc8 |
|
26-Nov-2015 |
Narayan Kamath <narayan@google.com> |
SimpleDateFormat: Emulate support for 'L' and 'c' format specifiers. It looks like we'd partially implemented this already and this change fills in the missing pieces. This is a temporary change because all of this will be replaced with a proper ICU4J based formatter in short order. bug: 25859156 Change-Id: I316a37b7c4ad5fb55ed592307d0683de85c14670
|
b7554f779d330037a5cf591fcc8be73db73a0384 |
|
07-Sep-2015 |
Narayan Kamath <narayan@google.com> |
Pretend to support 'L' and 'c' format specifiers. Temporary fixes for Clocks / Maps. Proper support for standalone week and month will be implemented in a future change. Change-Id: I58e2cdb7c43978423f68f2d98d43341a3d9c748e
|
9c853c5b9ebbb0ef60a013ae10ee411d70dfa832 |
|
18-Feb-2015 |
Piotr Jastrzebski <haaawk@google.com> |
Use OpenJdk implementations of java.text.* - LocaleInternalsTest has been disabled since it depends on internal implementation details. - Collator: Use libcore's RuleBasedCollatorICU to fetch collator rules instead of sun.misc.resources.LocaleData & friends. - DateFormat: Add support for set24HourTimePref (not wired up yet). - DateFormatSymbols : Use libcore's LocaleData & TimeZoneNames classes internally. - NumberFormat: Use libcore's LocaleData. - Drop support for SCIENTIFICSTYLE (we should re-enable this at some point ?). - SimpleDateFormat : Don't reject the format specifiers for standalone weekday and friends. We'll need to switch over to using ICU4J formatters at some point. - Calendar : Use GregorianCalendar only. - TimeZone : Use TimeZoneNames to access time zone names. Change-Id: I4a2866904d4f2f39f0793154d9aad7f109da3b5a
|
51b1b6997fd3f980076b8081f7f1165ccc2a4008 |
|
16-Feb-2015 |
Piotr Jastrzebski <haaawk@google.com> |
Initial import of OpenJdk files. Create new libcore/ojluni directory with src/main/java and src/main/native subdirectiories. Build ojluni into core-oj jar. Use openjdk classes from java.awt.font package. Copy all files from jdk/src/share/classes and jdk/src/solaris/classes directories in openjdk into libcore/ojluni/src/main/java. Copy following native files from openjdk to libcore/ojluni/src/main/native: jdk/src/solaris/native/java/io/canonicalize_md.c build/linux-amd64/include/classfile_constants.h jdk/src/share/native/java/net/DatagramPacket.c jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c jdk/src/share/native/java/lang/Double.c jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c jdk/src/solaris/native/java/io/FileDescriptor_md.c jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c jdk/src/share/native/java/io/FileInputStream.c jdk/src/solaris/native/sun/nio/ch/FileKey.c jdk/src/solaris/native/java/io/FileOutputStream_md.c jdk/src/solaris/native/java/io/FileSystem_md.c jdk/src/share/native/java/lang/Float.c jdk/src/share/native/java/net/Inet4Address.c jdk/src/solaris/native/java/net/Inet4AddressImpl.c jdk/src/share/native/java/net/Inet6Address.c jdk/src/solaris/native/java/net/Inet6AddressImpl.c jdk/src/share/native/java/net/InetAddress.c jdk/src/solaris/native/java/net/InetAddressImplFactory.c jdk/src/share/native/java/io/io_util.c jdk/src/solaris/native/sun/nio/ch/IOUtil.c jdk/src/share/native/java/io/io_util.h jdk/src/solaris/native/java/io/io_util_md.c jdk/src/solaris/native/java/io/io_util_md.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/java_io_FileDescriptor.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileInputStream.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileOutputStream.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileSystem.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_ObjectStreamClass.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_UnixFileSystem.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Double.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Float.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Integer.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Long.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Runtime.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Shutdown.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_StrictMath.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_String.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_System.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Thread.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Throwable.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_DatagramPacket.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4Address.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4AddressImpl.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6Address.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6AddressImpl.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddress.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddressImplFactory.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_NetworkInterface.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainDatagramSocketImpl.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainSocketImpl.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketInputStream.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOptions.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOutputStream.h jdk/src/share/native/java/lang/java_props.h jdk/src/solaris/native/java/lang/java_props_md.c jdk/src/share/native/java/util/zip/Adler32.c as java_util_zip_Adler32.c jdk/src/share/native/java/util/zip/CRC32.c as java_util_zip_CRC32.c build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_CRC32.h jdk/src/share/native/java/util/zip/Deflater.c as java_util_zip_Deflater.c build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Deflater.h jdk/src/share/native/java/util/zip/Inflater.c as java_util_zip_Inflater.c build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Inflater.h jdk/src/share/native/java/util/zip/ZipFile.c as java_util_zip_ZipFile.c build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_ZipFile.h jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h jdk/src/share/native/common/jlong.h jdk/src/solaris/native/common/jlong_md.h jdk/src/share/native/common/jni_util.c jdk/src/share/native/common/jni_util.h jdk/src/solaris/native/common/jni_util_md.c jdk/src/share/javavm/export/jvm.h jdk/src/solaris/javavm/export/jvm_md.h jdk/src/solaris/native/java/net/linux_close.c jdk/src/share/native/sun/misc/NativeSignalHandler.c jdk/src/solaris/native/sun/nio/ch/NativeThread.c jdk/src/share/native/java/net/net_util.c jdk/src/share/native/java/net/net_util.h jdk/src/solaris/native/java/net/net_util_md.c jdk/src/solaris/native/java/net/net_util_md.h jdk/src/solaris/native/java/net/NetworkInterface.c jdk/src/share/native/sun/nio/ch/nio.h jdk/src/solaris/native/sun/nio/ch/nio_util.h jdk/src/share/native/java/io/ObjectStreamClass.c jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c jdk/src/solaris/native/java/net/PlainSocketImpl.c jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c jdk/src/share/native/java/lang/Runtime.c jdk/src/share/native/java/lang/Shutdown.c jdk/src/share/native/sun/misc/Signal.c jdk/src/solaris/native/java/net/SocketInputStream.c jdk/src/solaris/native/java/net/SocketOutputStream.c jdk/src/share/native/java/lang/StrictMath.c jdk/src/share/native/java/lang/String.c build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_NativeSignalHandler.h build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_Signal.h build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/sun_net_spi_DefaultProxySelector.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileChannelImpl.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileDispatcherImpl.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileKey.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOStatus.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOUtil.h build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_NativeThread.h jdk/src/share/native/java/lang/System.c jdk/src/share/native/java/lang/Thread.c jdk/src/share/native/java/lang/Throwable.c jdk/src/solaris/native/java/io/UnixFileSystem_md.c jdk/src/solaris/native/java/lang/UNIXProcess_md.c jdk/src/share/native/java/util/zip/zip_util.c jdk/src/share/native/java/util/zip/zip_util.h Change-Id: Ib237df4e1b7b5b4d9f12e74d189e6ec9eed3c31d
|