EasyML
- offers basic DTD-type support and full Java support
(see EasyML and EasyML.Profile configuration).
- Dependencies:
"kxml2-min-2.3.0.jar" - compile+runtime
(http://sourceforge.net/projects/kxml/files/kxml2/2.3.0/kxml2-min-2.3.0.jar/download)
Release 1.8.3
- bugfix: XMLReader text driver comsume with pretty print.
- bugfix: XMLWriter text driver attribute validation.
- bugfix: XMLWriter and XMLReader allow field names containing "$".
- bugfix: only register AWT strategies if AWT available.
Release 1.8.2
- feature: added EasyML.defaultConfiguration(writer, prettyCollections).
- bugfix: PrettyCollections impl for comparators.
Release 1.8.1
- feature: PrettyCollections option for formatting Java Collections.
- bugfix: collection impl for java.util.Collections unmodifiableSequencedCollection().
Release 1.8.0 (requires Java 21)
- feature: added java.util.Collections unmodifiableSequencedCollection, unmodifiableSequencedMap,
unmodifiableSequencedSet strategies.
Release 1.7.3
- feature: XMLReader exclude fields (similar to XMLWriter exclude fields).
- feature: added OptionalDouble, OptionalInt, OptionalLong strategies.
- feature: added ArrayDeque, PriorityQueue strategies.
Release 1.7.2
- refactor: improved XML writer, reader and EasyML APIs.
- feature: added HexFormat strategy.
Release 1.7.1
- feature: added List.of, Map.of, Set.of strategies.
- feature: added java.util.Collections unmodifiableList, unmodifiableMap, unmodifiableSet strategies.
Release 1.7.0 (requires Java 17)
- feature: support for Java records.
Release 1.6.0 (requires Java 9, recommended up to Java 17)
- XMLWriter and XMLReader use getters and setters.
- feature: support for Java 9 modules.
- NON-BACKWARD COMPATIBLE refactor of ReflectionUtil.
- refactor: remove deprecated Class.newInstance() usages.
- refactor: limited reflection usage from Properties, EnumSet, EnumMap,
SingletonList, SingletonSet, SingletonMap strategies.
- feature: added java.util.concurrent.atomic strategies.
- feature: added java.util.Collections emptyList, emptyMap, emptySet strategies.
Release 1.5.2
- feature: added generic mechanism for cache clearing.
Release 1.5.1
- feature: added functional API.
- feature: added CalendarStrategy and OptionalStrategy.
- feature: added java.time strategies.
- performance: added caching to SerializableStrategy.
- refactor: remove Profile feature.
Release 1.5.0 (requires Java 8, recommended up to Java 9)
- feature: support for Java 9 security.
- NON-BACKWARD COMPATIBLE refactor of ReflectionUtil.
Release 1.4.7
- last Java 7 compatible release.
- bugfix: performance regression in Serialization strategy.
- remove AccessibleObject.isAccessible calls.
Release 1.4.6
- remove deprecated v1.3.4 object-o and array-o strategies.
- replaced MarshalContext aliasFor methods with aliasOrNameFor methods.
- bugfix: EnumStrategy marshalling fix.
- feature: added TeeSet and ConcurrentHashMap support.
- feature: added EnumSet and EnumMap support.
- feature: added serialization serialPersistentFields support.
Release 1.4.5
- performance: improved n.s.e.EasyML.deserialize() speed by reusing the
XmlPullParser when available.
- refactor: minor code improvements.
Release 1.4.4
- refactor: made n.s.e.m.CompositeStrategy.unmarshalInit return type more
loose to better support readResolve in n.s.e.m.j.i.ExternalizableStrategy.
- refactor: n.s.e.XMLReader and n.s.e.XMLWriter use HashMap instead of
ConcurrentHashMap if not in shared mode (i.e. if in standalone mode).
Release 1.4.3
- feature: new n.s.e.m.j.i.ExternalizableStrategy offers support for the
Java Externalizable protocol.
- feature: new n.s.e.XMLReader.hasMore method.
- feature: new n.s.e.m.j.u.BitSetStrategy available and included into the
EasyML.Profile.Generic for more portable XML.
- performance: n.s.e.m.j.i.SerializableStrategy prevent auto-boxing in
object input and output streams.
Release 1.4.2
- bugfix: n.s.e.m.j.i.SerializableStrategy GetFieldImpl readFields fix.
Release 1.4.1
- bugfix: XMLWriter text driver empty line when pretty printing.
Release 1.4.0
- NON-BACKWARD COMPATIBLE refactor: EasyML now immutable(removed setters).
- feature: EasyMLBuilder for easyml customization.
Release 1.3.11
- bugfix: n.s.e.m.j.i.SerializableStrategy GetFieldImpl readFields fix.
- bugfix: XMLWriter text driver startElement impl improvement.
Release 1.3.10
- bugfix: XMLWriter text driver empty line when pretty printing.
- javadoc: improvements.
Release 1.3.9
- feature: EasyML, XMLReader, XMLWriter custom XML root tag setting.
- refactor: source level 1.7 warnings fixed.
Release 1.3.8
- performance: EasyML cache reflected class constructors.
- feature: EasyML, XMLReader, XMLWriter clearCache() methods.
Release 1.3.7
- performance: EasyML and XMLReader cache reflected classes and fields.
This is done via n.s.e.m.UnmarshalContext's classFor() and fieldFor().
Distinct EasyML instances have separate caches.
XMLReaders share caches only when isSharedConfiguration().
- feature: added EasyML.Style.FAST.
- bugfix: ClassStrategy did not take into account aliasing settings.
- bugfix: remove duplicate encoded.clear() from XMLWriter.reset().
Release 1.3.6
- feature: added n.s.e.EasyML.releaseCurrentReader()
and n.s.e.EasyML.releaseCurrentWriter() methods.
- performance: removed the redundant easyml version attribute.
Release 1.3.5
- performance: reduced the impact of class aliasing and field aliasing
features, even when NOT used, on serialize() and deserialize() times.
- performance: n.s.e.u.ReflectionUtil unsafe instantiation method now
ensures a single runtime-dependent instantiator instance.
- refactor: n.s.e.m.MarshalContext and n.s.e.m.UnmarshalContext getter
for simpleDateFormat changed to formatDate() and parseDate() for
security reasons.
- refactor: n.s.e.m.CompositeWriter.endAttributes() was removed since
it was deprecated since version 1.2.2.
- refactor: renamed "object-o", "array-o" to "objectx", "arrayx"
- bugfix: object field values could get inverted at read if ALL of the
following conditions hold:
1. skipDefaults is enabled.
2. instance has same name fields on different inheritance levels.
3. instance defines default values on each level.
4. subfield has default value, while superfield as non-default value.
5. superfield is the 1st XML field of it's declaring class.
6. instance is not serializable.
- BACKWARD COMPATIBLE: version 1.3.5 is configured to be compatible with
XML outputted by versions 1.3.5 down to 1.2.1 and will produce only
1.3.5 formatted XML.
Release 1.3.4
- performance: n.s.e.XMLWriterTextDriver improvements allow EasyML to
perform up to 20% faster. The performance improvement is more
pronounced when pretty printing is enabled.
Release 1.3.3
- doc: better javadoc for n.s.e.EasyML, n.s.e.XMLReader, n.s.e.XMLWriter.
- bugfix: include position descriptor in each InvalidFormatException case.
- bugfix: n.s.e.XMLReaderTextDriver.consumeFully() fix.
Release 1.3.2
- performance: n.s.e.EasyML serialize() and deserialize() methods use
ThreadLocal internally for XMLWriter and XMLReader instance reuse,
in order to improve performance, while remaining thread-safe.
Release 1.3.1
- feature: added n.s.e.EasyML newReader() and newWriter methods in order
to expose more API features at facade level.
- bugfix: prevent shared-config readers and writers from allowing config
modifications.
Release 1.3.0
- NON-BACKWARD COMPATIBLE refactor:
merged n.s.e.ExtendedEasyML into n.s.e.EasyML.
- feature: n.s.e.EasyML facade is now thread-safe while the thread-unsafe
n.s.e.XMLReader and n.s.e.XMLWriter offer prototyping for faster per-
thread copy instance creation.
- feature: marshal- and unmarshal contexts are dateformat-aware.
- revert: better XMLWriter and XMLReader close method impls because of
multithread features.
- bugfix: setCustomArrayTag validation fixed.
Note: except for the last mentioned bugfix, all other changes were made
to offer an easier and faster API for multithreaded environments.