Wiki

Clone wiki

snakeyaml / Changes

SnakeYAML is normally released twice a year: August and February

Changes

1.27 (in git)

  • Fix #476: Make constructor of EnvScalarConstructor public (thanks to Yin shen)
  • Fix #474: Parse the value of byte and short after a narrowing primitive conversion (thanks to Олег Мороз)
  • Fix yet another OWASP false positive. It complains that the Spring controller makes SnakeYAML insecure even though SnakeYAML does not use Spring controller and does not depend on Spring (but the tests do). Bump spring.version from 3.2.17.RELEASE to 5.2.4.RELEASE
  • Migrated from hg to git

1.26 (2020-02-28)

  • Fix #377: Allow configuration for preventing billion laughs attack (thanks to Colm O hEigeartaigh)
  • Add: parse ENV variables similar to how it works for docker-compose
  • Fix #468: Allow non ASCII characters in the anchor names (thanks to 大竹崇文)
  • Add: expose Event.ID in Event via a getter
  • Fix #454: Add example for integer without time pattern (thanks to Evgeniy Stroykov)

1.25 (2019-08-13)

  • Fix #441: Restore the way to get anchor for a Node (thanks to @kdvolder)
  • Fix #437: Introduce setting to keep !!str tag for String even when it contains non-printable chars (thanks to @Nebu)
  • Update plugin versions

1.24 (2019-02-28)

  • BaseConstructor: Factored out postponed mapping logic so subclasses can effectively override constructMapping2ndStep() and delegate to the postponed mapping logic (backported from SnakeYAML engine)
  • Fix #431: Customize simple key length when dumping (thanks to @sergeyleonov)
  • Fix #430: Wrap runtime exceptions into YAMLException. It was reported for snakeyaml-engine (thanks to @fred_curts)
  • Fix: Null tag constructor not called when parsing top-level null value. It was reported for snakeyaml-engine (thanks to @fred_curts)
  • Fix #429: Provide "Automatic-Module-Name" entry in MANIFEST (thanks to @nlipsky)
  • Fix #426: Fix NPE when duplicate keys are not allowed and the key is null (thanks to @marc_omorain)
  • Apply pull request #41: Support java.sql classes without the need to depend on java.sql module in java9+ (thanks to @tomas-langer)
  • Update: Java 7 is required.
  • Fix #423: Date Serialization Fails for TimeZones on Daylight Savings Time (thanks to @rerobins)

1.23 (2018-08-27)

  • Update: run tests under Java 11 (thanks to Docker) This is the last release to support Java 6. As of the next release Java 7 will be required.
  • Fix #412: Restore the Boolean constructors for Events and Nodes for binary compatibility of dependent projects (thanks to Alex Heneveld)
  • Fix #411: System Property "java.runtime.name" is not required to be defined (thanks to @marcus_boehm)
  • Fix #409: Dumping Enum breaks when Enum value is Anonymous inner class (thanks to @evanward1)

1.21 (2018-04-13)

  • Update: Scanner.peekToken() and Scanner.getToken() throw exception instead of returning null
  • Update: Enhance output of token IDs (thanks to @sbaudoin)
  • Update: Mark - expose buffer and pointer (thanks to @sbaudoin)
  • Update: Improvements in the Bitbucket pipeline (thanks to @slachiewicz)
  • Fix #397: Plain scalars with colons in flow sequences/mappings are valid YAML. This change follows what happens with PyYAML and libyaml (thanks to developers from the YAML community)

1.20 (2018-02-28)

  • Fix #393: Improve reflective access operation to avoid warning under Java 9 (thanks to @thetaph1 and @IanDCarroll)
  • Hold #397: because of the inconsistent corner cases the ':' is not yet allowed in a flow context
  • Refactor nodes and events - use enum FlowStyle instead of Boolean (minor backwards-incompatible change)
  • Refactor ScalarToken, ScalarNode and ScalarEvent - use enum ScalarStyle instead of Character (minor backwards-incompatible change)
  • Refactor Mark - remove unused code (minor backwards-incompatible change)
  • Fix #395 and #394: Introduce DuplicateKeyException and report line number for duplicate keys when creating non-Javabeans (thanks to @neopaf and @manfredi_giordano)

1.19 (2017-10-14)

  • Apply pull request #22: Only use FIELD access for Android in PropertyUtils (thanks to @SteveOfTheStow).
  • Apply pull request #27: Add getAnnotations() and getAnnotation() methods to Property (thanks to @RoKish).
  • Apply pull request #26 and fix #383: Some configuration properties of Representer were ignored (thanks to @RoKish).
  • Fix issue #386:Fix order of duplicate keys indices to prevent wrong removals (thanks to @NathanWolf).
  • Update: major improvement when parsing JavaBeans.
  • Fix issue #382 and #322: MethodProperty should check for generic type in getters and setters (thanks to @jason_s and @ksainsbury).
  • Fix issue #377: Add test for billion laughs attack.
  • Fix issue #368: Relax final restriction on TypeDescription. (thanks to @cjnygard).
  • Fix issue #375: Empty YAML file must return null instead of throwing an exception when loading a JavaBean. (thanks to @mpkusnierz).
  • Fix issue #374: Localization settings (e.g. fr_CA) convert Number type floats to ints. (thanks to @darren_janeczek).
  • Apply pull request #20: Provide access to node's anchor (thanks to @piotr_piastucki).
  • Fix issue #370: Remove redundant "Bundle-RequiredExecutionEnvironment: J2SE-1.5" (thanks to @mbooth101).
  • Fix issue #364: Serializing Calendar objects with certain timezone offsets renders invalid YAML (thanks to @oscar_scholten. See pull request #17).

1.18 (2017-02-22)

  • Add: create Android artifact with android classifier
  • Fix issue #358: Validate DumperOptions to prevent invalid YAML to be dumped.
  • Fix issue #355: Fix for emitter to split long plain string scalars over multiple lines (thanks to @oscar_scholten. See pull request #16).
  • Apply pull request #13: Let Mark implement Serializable so that ParserException can be serialized (thanks to Hans Schulz)
  • Fix issue #337: Throw exception in case of duplicate keys when LoaderOptions.allowDuplicateKeys is false (thanks to @rbuckland. See pull request #11).
  • Fix issue #351: Keep same nodes order on merge (preprocess keys for MappingNode and remove duplicates keeping the last one).
  • Fix issue #349: Ignore white spaces for base64 encoded scalar (thanks to Terry Moschou)
  • Fix issue #348: Not removing parent object when composed object is an anchor (thanks to Muhammet YILDIZ)
  • Fix issue #323: Support "Miscellaneous Symbols and Pictographs" (thanks to Pawel Skierczynski [Atlassian]). This fix introduces minor backwards-incompatible changes - some of the methods have been renamed. This fixes also long standing issue with iOS emoji
  • Fix issue #341: Fix NPE in BaseRepresenter.multiRepresenters if it contains 'null' as a key (thanks to Jörg Michelberger)
  • Update plugin versions

1.17 (2016-02-19)

  • Fix issue #318: Use Thread.currentThread.getContextClassLoader in Class.forName instead of default one (thanks to @ronsigal)
  • Fix issue #327: Allow customizing block sequence indentation (thanks to @tareqsha)
  • Fix issue #329: Add parameters to POM to change distribution server
  • Fix issue #326: Relax some of the modifiers to make integration easier (thanks to @Vermut)
  • Fix issue #310: Make use of private/protected constructors for Scalars and 'immutable' objects. This fix allows Bean properties of type java.util.Optional<T> (thanks to Alex)
  • Fix issue #306: Support UUID (thanks to The Alchemist)
  • Apply pull request #3: Add Support for Polyglot Maven. Thanks to Jason van Zyl.
  • Fix issue #314: Ability to customize anchor names (thanks to B. K. Oxley)

1.16 (2015-08-18)

  • Pull request 2: Added a correct URL for the license (thanks to Oliver Fischer)
  • Fix issue 302: Convert byte[] to String when it matches the JavaBean property (thanks to Jalian)
  • Fix issue 212: Fix a typo in an error message in ScannerImpl (thanks to michael koch)
  • Fix issue 209: Do not print special characters in the error message (thanks to joseph.gregory)
  • Investigate issue 199: Duplicate mapping keys

1.15 (2015-02-19)

  • Use Maven 3
  • Added split lines option to DumperOptions to allow line splitting to be disabled. (thanks to Ville Koskela)
  • Fix issue 201: Fix grammar error in exception message (thanks to eric.c.dahl and matthew.boston)

1.14 (2014-08-29)

  • Fix issue 197: Improve loading JavaBeans with fields using custom constructors (thanks to dev at minecrell.net)
  • Fix issue 192: Do not implement "Value Key Language-Independent Type" to make '=' a standard character (thanks to Marc)
  • Fix issue 188: Improve error message for invalid YAML document (thanks to shtilman)
  • Fix issue 183: Support Number class (thanks to darren.janeczek)
  • Fix issue 182: Double.POSITIVE_INFINITY applied to float fields (thanks to darren.janeczek)

1.13 (2013-09-05)

  • Java 6 is now used to build the package. The source code stays compatible with Java 5
  • Fix issue 178: OSGi - Specify version for exported packages (thanks to Lukasz Dywicki)
  • Fix issue 177: Improve error report while parsing a JavaBean (thanks to Eric Brown)
  • Fix issue 135: Arrays of primitives are now fully supported (thanks to Jordan)
  • Fix issue 174: Duplicate anchors in an input document should not be an error (thanks to llasram)
  • Fix issue 172: Using a locale with minimum number fraction digits breaks anchor generation (thanks to Michael Simons)
  • Fix issue 171: Use more generic generics in BaseRepresenter (thanks to Ash2kk)

1.12 (2013-03-02)

  • Fix issue 169: Make Constructor.typeDefinitions protected to be more flexible (thanks to Alexey)
  • Improve the error message when a TAB is used as indentation (due to enormous amount of misunderstanding). It now says: "found character \t '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)"

1.11 (2012-09-30)

  • Fix issue 158: improve support for 32-bit characters (UTF-16 surrogate pairs) (thanks to Charlie)
  • Fix issue 146: empty tags should not force explicit document start (thanks to Charlie)
  • Fix issue 156: setSkipMissingProperties should not fail for non-scalar values (thanks to Blake Matheny)
  • Fix issue 155: any generated output must be parsed without errors (thanks to Robert Fletcher)
  • Fix issue 154: Add option to skip missing JavaBean properties when deserializing YAML into Java object (thanks to Shawn Lauzon)
  • Fix issue 149: Directives are no longer lost between documents (thanks to robinETmiller)
  • Fix issue 147: Serialized representation of character U+FFFD causes exception on deserialization (thanks to johnkarp)
  • Fix issue 145: exception.getMessage() must show the line number as exception.toString() does (thanks to theaspect)
  • Fix issue 144: improve type inference for Compact Object Notation (thanks to tommy.odom)
  • Better support for Android

1.10 (2012-02-12)

  • Apply some minor FindBugs and PMD recommendations
  • Fix issue 141: TimeZone is configurable in DumperOptions (thanks to Yaroslav)
  • Fix issue 139: merge should favor last key in map (thanks to davidahelder)
  • Fix issue 136: TAB is allowed inside a plain scalar. This is yet another deviation from PyYAML (thanks to Uwe Kubosch)
  • Fix issue 138: Expose internal data of ReaderException (thanks to asari.ruby)
  • Fix issue 137: Respect supplementary characters (thanks to joshhoyt)
  • Fix issue 66: use literal scalar style when the scalar contains multiple lines

1.9 (2011-08-15)

  • Fix issue 130: apply regular expression for !!float from YAML 1.2 specification (thanks to xandey)
  • Fix issue 127: BaseRepresenter.representData(Object data) has been made 'final' to avoid confusion *Update public API issue 124: Introduce Yaml.loadAs(), Yaml.dumpAs() and Yaml.dumpAsMap() methods. JavaBeanLoader and JavaBeanDumper are deprecated (thanks to JordanAngold)
  • Fix issue 129: Provide low level methods from objects to Nodes and Events (represent(Object), serialize(Node))
  • Fix issue 125: Provide Manen 3 support
  • Fix issue 116: Improved support for empty JavaBeans (thanks to Jim Peterson)
  • Fix issue 121: Close files in tests to avoid a possible file handle limit (thanks to Jaromir)
  • Fix issue 112: Improved support for parameterised types in collections (thanks to Lethargish)
  • Fix issue 115: parametrized JavaBeans fail to load and dump because they are treated as Maps (thanks to elkniwt)
  • Fix issue 114: do not remove root tags of JavaBeans when it is not explicitly requested (thanks to gileadis)
  • Fix issue 111: Long escaped tag URI sequences throw BufferOverflowException (thanks to JordanAngold)
  • Fix issue 110: introduce a package for external libraries and move there the 64Coder and the Google's URL encoder (thanks to dmitry.s.mamonov)
  • Fix issue 96: generate OSGi bundle (thanks to thegreendragon and longkerdandy)
  • Fix issue 109: ancient years must be dumped with leading zeros (thanks to cjalmeida)
  • Fix issue 108: Enum's name property shall be dumped instead of the 'toString()' output (thanks to JordanAngold)

1.8 (2011-02-15)

  • Fix issue 104: Expose Mark.index
  • Fix issue 100: !!merge tag properly merges also JavaBeans (thanks to JordanAngold)
  • Issue 99: Add an example for escaping line breaks in binary content
  • Fix issue 59: Simplify the way to dump JavaBean properties in a custom order
  • Issue 97: Add an example to show how to use JavaBean property which is a SortedSet but encoded as a YAML sequence
  • Fix issue 95: Loading of generic collections with Array parameter(s)
  • Issue 87: Implement Compact Object Notation
  • Fix issue 69: Iterable is no longer serialised as sequence
  • Fix issue 88: Custom tag erased when referenced from generic collection
  • Fix issue 82: When object referenced from generic collection dumping may erase tags and prevent future loading
  • Fix issue 79 and 101: Context for error reporting consumes a lot of resources
  • Fix issue 81: Fix minor bug in Representer
  • Fix issue 80: Timestamp is not parsed properly when milliseconds start with 0 (thanks to Sebastien Rainville)
  • Cleanup unused code in deprecated Loader and Dumper

1.7 (2010-08-12)

  • Update public API (issue 77): Loader and Dumper are deprecated. All the functionality was moved to the Yaml class.
  • Fix issue 74: Do not use redundant tags for arrays which are JavaBean properties
  • Add examples to create scalars that match custom regular expression (issue 75): when the runtime class is not defined, and when the runtime class is defined in the JavaBean (thanks to jon.p.hermes)
  • Fix issue 73: Provide support for loading java.util.Set as a sequence. Also provide an example to serialise a java.util.Set as a sequence. (thanks to birnbuazn)
  • Fix issue 72: Support java.util.Collection as a parent for List and Set (thanks to birnbuazn)
  • Fix issue 55: Allow direct field access bypassing setters and getters (thanks to mju and birnbuazn)
  • Fix issue 69: Serialise Iterator and Iterable as sequences
  • Add JodaTime example (thanks to Antony Stubbs)
  • Fix generic collections which contain other collections (thanks to Alex Maslov)
  • Fix issue 67: java classes containing non-ASCII characters in names are incorrectly encoded (thanks to Manuel Sugawara)
  • Fix issue 65: add checks for null arguments for JavaBeanDumper (thanks to lerch.johannes)
  • Fix issue 64: ClassCastException in Representer when working with ParameterizedType (thanks to Maxim)
  • Fix issue 63: Problems with recursive links when included in an array (thanks to Udo and Alex)
  • Add examples for dumping custom values for !!bool and !!null
  • Fix issue 61: ClassCastException when dumping generic bean (thanks to Udo)
  • Fix issue 58: JavaBeanDumper.dump throws NullPointerException on list property with null element (thanks to jeff.caulfiel)
  • Add an example of parsing a YAML document generated by Perl
  • Fix issue 56: Make constructors in SafeConstructor public
  • Releases are available in the central Maven repository (thanks to Sonatype)
  • Fix issue 54: deploy artifacts in the Sonatype repository. (thanks to David Bernard)
  • Fix issue 53: Enhancement for a pretty format that combines BLOCK and FLOW. (thanks to obastard)
  • Fix issue 50: Unable to dump JavaBean that inherits from a protected base class. (thanks to sualeh.fatehi)

1.6 (2010-02-26)

  • Fix issue 47: Don't dump read-only JavaBean properties by default. This is backwards-incompatible change. (thanks to obastard)
  • Fix issue 49: Support GregorianCalendar as regular Timestamp (thanks to obastard)
  • Fix issue 51: do not escape non-ASCII characters in double quoted scalar style (thanks to Johann Werner)
  • Fix issue 48: Introduce representJavaBeanProperty() method in Representer. (thanks to obastard)
  • Representer.representJavaBean() returns MappingNode
  • Add an example of serialising java.io.File as scalar node for issue 46
  • Refactoring of scanner and parser. Low-level API is not affected.
  • Improve performance: use StringBuilder instead of StringBuffer
  • Introduce String constants in scanner and emitter to improve readability and performance
  • Fix issue 43: introduce Tag class. This is backwards-incompatible change.
  • Fix issue 42: BaseConstructor.getConstructor(Node node) is now 'protected' to get more flexibility at runtime. (thanks to Artem)
  • Fix issue 40: Ignore tags when they are compatible with the JavaBean runtime class (thanks to sitrious)
  • Add an example how to ignore unknown tags (for issue 31 and issue 39)
  • Add an example how to work with Ruby YAML documents
  • Do not omit the tag for JavaBean properties when the tag is explicitly defined
  • Fix issue 38: Fix ID format for numbers over 999 (thanks to gchpaco)
  • Fix issue 29: it is possible to define which scalar style will be used when a scalar is emitted
  • Fix issue 36: process a family of tags which have the same prefix with one constructor
  • Add an example to demonstrate how to restrict classes to be loaded
  • Improve JavaDoc (thanks to Stefan)
  • add examples for flexible YAML dumping using a template engine

1.5 (2009-10-30)

  • Fix issue 27: Extend Resolver to support custom implicit types
  • Fix issue 25: Improve usage of generic collections in JavaBeans (thanks to the Polyglot Maven team and especially to Benjamin Bentmann)
  • Fix issue 26: Parse different Map implementations (SortedMap, Properties) without global tags if they are JavaBean properties (thanks to Benjamin Bentmann)
  • SnakeYAML 1.4 is available in the central Maven repository
  • Fix issue 24: Line numbers reported in Exceptions are Zero based, should be 1 based (thanks to shrode)
  • Fix issue 21: Support arrays of reference types as JavaBean properties (thanks to ashwin.jayaprakash)
  • Fix issue 17: Respect root tag for sequences (thanks to jcucurull)
  • Fix issue 18: SafeRepresenterrespects custom tags for standard Java classes where standard tag has more then one Java implementation available (Long, List, Map, Date etc) (thanks to creiniger)
  • Add possibility to define a custom Class Loader
  • Fix a scanner error not reported when there is no line break at the end of the stream. Import the fix from PyYAML 3.09 {ticket 118}
  • Fix issue 16: Cache JavaBean class properties (thanks to infinity0x)
  • Fix issue 14: ArrayList is more efficient than LinkedList (thanks to infinity0x)

1.4 (2009-08-26)

  • Apache License, Version 2.0 applied
  • Fix issue 13: Provide javadocs link to Sun Java API (thanks to infinity0x)
  • Fix issue 11: create a Java instance with the following priority to choose the class: Explicit tag -> Runtime class (defined in JavaBean) -> implicit tag (thanks to infinity0x)
  • Fix issue 9: Bean with no property cannot be instantiated (thanks to wwagner4)
  • Better support for loading immutable instances
  • Major refactoring: Constructor is completely rewritten to prepare better support for immutable objects
  • Change Maven repository path: groupId=org.yaml, artifactId=snakeyaml
  • Fix issue 10: dump omits JavaBean class name when used with an alias (thanks to derrick.rice)
  • JAR packages with source and Javadoc will also be uploaded to Maven repository
  • Introduce JavaBeanLoader and JavaBeanDumper. Deprecate JavaBeanParser
  • Fix issue 8: Representer was keeping state between invocations (thanks to Alan Gutierrez)

1.3 (2009-07-20)

  • Add guideline about Generic class definitions (http://en.wikipedia.org/wiki/Generics_in_Java) for JavaBeans
  • Fix issue 5: set the "cause" field for MarkedYAMLException (thanks to infinity0x)
  • Fix issue 1: recursive object are now fully supported (thanks to Alexander Maslov)
  • Fix issue 3: does not dump maps of beans correctly (thanks to infinity0x)
  • Project migrated to Google code (thanks to Google for supporting Mercurial)
  • Fix: null as a JavaBean property was not handled properly (thanks to Magne)
  • Fix ticket #40: java.sql.Timestamp was not handled properly (thanks to Magne)

1.2 (2009-04-27)

  • add info for low-level API
  • Add Yaml.parse() method which return Events to support low level YAML processing
  • Add Yaml.compose() methods which return Nodes
  • Rename LineBreak.LINUX to LineBreak.UNIX
  • Refactor: rename enums in DumperOptions to make the names consistent
  • Add possibility to parse all scalars as Strings
  • Respect DumperOptions with a custom Representer
  • Represent TAB as '\t' instead of '(9' in an error message

1.1 (2009-03-14)

  • Test coverage reached 98%
  • byte[] is used for type binary
  • Better Spring support: the root JavaBean class can be specified as a String
  • Performance: fix a bug with expanding Regular Expressions (thanks to Christophe Desguez)
  • Fix ticket #4: java.sql.Date was not handled properly (thanks to Christophe Desguez)
  • Introduce Enums in DumperOptions
  • Minor refactoring and bug fixes
  • Add Threads and Spring sections to the wiki documentation

1.0.1 (2009-02-18)

  • Proper Enum support (thanks to James Nissel)
  • The mailing list is renamed to snakeyaml-core to avoid a name conflict in Google AppEngine
  • Provide possibility to define/eliminate the root tag for JavaBeans
  • Arrays as JavaBens properties are properly supported
  • Do not emit redundant tags for JavaBeans
  • Respect public fields in JavaBeans
  • Import changes from PyYAML 3.07/3.08
  • Use global tags (with !!) to load/dump Java custom classes
  • Fix parsing Long.MIN_VALUE
  • When constructing integers try to create the first in the following order: Integer -> Long -> BigInteger
  • Add possibility to define an implicit resolver
  • Add possibility to define an explicit constructor
  • Java objects can be constructed from mapping (javabean), from sequence (constructor), from scalar (constructor)
  • fix omap and pairs tags
  • Implement possibility to define a custom List or Map implementation
  • Implement possibility to define a custom Representer
  • Support arrays of reference types
  • Import latest changes from PyYAML (after 3.06 was released)
  • Fix Node identity to avoid aliases for simple types - [1, 1]
  • Recursive objects can be represented (but not yet constructed)

Updated