summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorWesley Wolfe <wesley.d.wolfe+git@gmail.com>2014-03-25 00:05:21 -0500
committerWesley Wolfe <wesley.d.wolfe+git@gmail.com>2014-05-14 07:07:37 -0500
commit8ac95b65e0767b8f4b614ab86785778098f1a25d (patch)
tree7498a37d45e9830907d1a3ef00b0e77bab7c2c28 /src/test
parent48756ec1d69b68a105e5dd043319c21b4d92ff8a (diff)
downloadbukkit-8ac95b65e0767b8f4b614ab86785778098f1a25d.tar
bukkit-8ac95b65e0767b8f4b614ab86785778098f1a25d.tar.gz
bukkit-8ac95b65e0767b8f4b614ab86785778098f1a25d.tar.lz
bukkit-8ac95b65e0767b8f4b614ab86785778098f1a25d.tar.xz
bukkit-8ac95b65e0767b8f4b614ab86785778098f1a25d.zip
Change YamlConfiguration encoding styles.
On JVMs with UTF-8 default encoding, this commit has no change in behavior. On JVMs with ascii default encoding (like some minimal linux installa- tions), this commit now uses UTF-8 for YamlConfiguration operations. Because all ascii is valid UTF-8, there is no feature degradation or data loss during the transition. On JVMs with any non-unicode but ascii-compliant encoding, this commit now forces YamlConfiguration to escape special characters when writing to files, effectively rendering the encoding to be plain ascii. Any affected file will now be able to migrate to UTF-8 in the future without data-loss or explicit conversion. When reading files, YamlConfiguration will use the system default encoding to handle any incoming non-utf8 data, with the expectation that any newly written file is still compliant with the system's default encoding. On JVMs with any non-unicode, but ascii-incompliant encoding (this may be the case for some Eastern character sets on Windows systems), this change is breaking, but is justified in claim that these systems would otherwise be unable to read YamlConfiguration for implementation dependent settings or from plugins themselves. For these systems, all uses of the encoding will be forced to use UTF-8 in all cases, and is effectively treated as if it was configured to be UTF-8 by default. On JVMs with unicode encoding of UTF-16 or UTF-32, the ability to load any configurations from almost any source prior to this change would have been unfeasible, if not impossible. As of this change, however, these systems now behave as expected when writing or reading files. However, when reading from any plugin jar, UTF-8 will be used, matching a super-majority of plugin developer base and requirements for the plugin.yml. Plugin developers may now mark their plugin as UTF-8 compliant, as documented in the PluginDescriptionFile class. This change will cause the appropriate APIs in JavaPlugin to ignore any system default encoding, instead using a Reader with the UTF-8 encoding, effectively rendering the jar system independent. This does not affect the aformentioned JVM settings for reading and writing files. To coincide with these changes, YamlConfiguration methods that utilize a stream are now deprecated to encourage use of a more strict denotation. File methods carry system-specific behaviors to prevent unncessary data loss during the transitional phase, while Reader methods are now provided that have a very well-defined encoder behavior. For the transition from InputStream methods to Reader methods, an API has been added to JavaPlugin to provide a Reader that matches the previous behavior as well as compliance to the UTF-8 flag in the PluginDescriptionFile. Addresses BUKKIT-314, BUKKIT-1466, BUKKIT-3377
Diffstat (limited to 'src/test')
0 files changed, 0 insertions, 0 deletions