|
1 | | -Project also available on SourceForge.net: |
| 1 | +EasyML |
| 2 | +- offers basic DTD-type support and full Java support |
| 3 | + (see EasyML and EasyML.Profile configuration). |
| 4 | +- Dependencies: |
| 5 | + "kxml2-min-2.3.0.jar" - compile+runtime |
| 6 | + (http://sourceforge.net/projects/kxml/files/kxml2/2.3.0/kxml2-min-2.3.0.jar/download) |
| 7 | + |
| 8 | + |
| 9 | +!Release 1.4.6 |
| 10 | +- remove deprecated v1.3.4 object-o and array-o strategies. |
| 11 | +- replaced MarshalContext aliasFor methods with aliasOrNameFor methods. |
| 12 | +- bugfix: EnumStrategy marshalling fix. |
| 13 | +- feature: added TeeSet and ConcurrentHashMap support. |
| 14 | +- feature: added EnumSet and EnumMap support. |
| 15 | +- feature: added serialization serialPersistentFields support. |
| 16 | + |
| 17 | + |
| 18 | +!Release 1.4.5 |
| 19 | +- performance: improved n.s.e.EasyML.deserialize() speed by reusing the |
| 20 | +XmlPullParser when available. |
| 21 | +- refactor: minor code improvements. |
| 22 | + |
| 23 | + |
| 24 | +!Release 1.4.4 |
| 25 | +- refactor: made n.s.e.m.CompositeStrategy.unmarshalInit return type more |
| 26 | +loose to better support readResolve in n.s.e.m.j.i.ExternalizableStrategy. |
| 27 | +- refactor: n.s.e.XMLReader and n.s.e.XMLWriter use HashMap instead of |
| 28 | +ConcurrentHashMap if not in shared mode (i.e. if in standalone mode). |
| 29 | + |
| 30 | + |
| 31 | +!Release 1.4.3 |
| 32 | +- feature: new n.s.e.m.j.i.ExternalizableStrategy offers support for the |
| 33 | +Java Externalizable protocol. |
| 34 | +- feature: new n.s.e.XMLReader.hasMore method. |
| 35 | +- feature: new n.s.e.m.j.u.BitSetStrategy available and included into the |
| 36 | +EasyML.Profile.Generic for more portable XML. |
| 37 | +- performance: n.s.e.m.j.i.SerializableStrategy prevent auto-boxing in |
| 38 | +object input and output streams. |
| 39 | + |
| 40 | + |
| 41 | +!Release 1.4.2 |
| 42 | +- bugfix: n.s.e.m.j.i.SerializableStrategy GetFieldImpl readFields fix. |
| 43 | + |
| 44 | + |
| 45 | +!Release 1.4.1 |
| 46 | +- bugfix: XMLWriter text driver empty line when pretty printing. |
| 47 | + |
| 48 | + |
| 49 | +!Release 1.4.0 |
| 50 | +- NON-BACKWARD COMPATIBLE refactor: EasyML now immutable(removed setters). |
| 51 | +- feature: EasyMLBuilder for easyml customization. |
| 52 | + |
| 53 | + |
| 54 | +!Release 1.3.11 |
| 55 | +- bugfix: n.s.e.m.j.i.SerializableStrategy GetFieldImpl readFields fix. |
| 56 | +- bugfix: XMLWriter text driver startElement impl improvement. |
| 57 | + |
| 58 | + |
| 59 | +!Release 1.3.10 |
| 60 | +- bugfix: XMLWriter text driver empty line when pretty printing. |
| 61 | +- javadoc: improvements. |
| 62 | + |
| 63 | + |
| 64 | +!Release 1.3.9 |
| 65 | +- feature: EasyML, XMLReader, XMLWriter custom XML root tag setting. |
| 66 | +- refactor: source level 1.7 warnings fixed. |
| 67 | + |
| 68 | + |
| 69 | +!Release 1.3.8 |
| 70 | +- performance: EasyML cache reflected class constructors. |
| 71 | +- feature: EasyML, XMLReader, XMLWriter clearCache() methods. |
| 72 | + |
| 73 | + |
| 74 | +!Release 1.3.7 |
| 75 | +- performance: EasyML and XMLReader cache reflected classes and fields. |
| 76 | + This is done via n.s.e.m.UnmarshalContext's classFor() and fieldFor(). |
| 77 | + Distinct EasyML instances have separate caches. |
| 78 | + XMLReaders share caches only when isSharedConfiguration(). |
| 79 | +- feature: added EasyML.Style.FAST. |
| 80 | +- bugfix: ClassStrategy did not take into account aliasing settings. |
| 81 | +- bugfix: remove duplicate encoded.clear() from XMLWriter.reset(). |
| 82 | + |
| 83 | + |
| 84 | +!Release 1.3.6 |
| 85 | +- feature: added n.s.e.EasyML.releaseCurrentReader() |
| 86 | + and n.s.e.EasyML.releaseCurrentWriter() methods. |
| 87 | +- performance: removed the redundant easyml version attribute. |
| 88 | + |
| 89 | + |
| 90 | +!Release 1.3.5 |
| 91 | +- performance: reduced the impact of class aliasing and field aliasing |
| 92 | + features, even when NOT used, on serialize() and deserialize() times. |
| 93 | +- performance: n.s.e.u.ReflectionUtil unsafe instantiation method now |
| 94 | + ensures a single runtime-dependent instantiator instance. |
| 95 | +- refactor: n.s.e.m.MarshalContext and n.s.e.m.UnmarshalContext getter |
| 96 | + for simpleDateFormat changed to formatDate() and parseDate() for |
| 97 | + security reasons. |
| 98 | +- refactor: n.s.e.m.CompositeWriter.endAttributes() was removed since |
| 99 | + it was deprecated since version 1.2.2. |
| 100 | +- refactor: renamed "object-o", "array-o" to "objectx", "arrayx" |
| 101 | +- bugfix: object field values could get inverted at read if ALL of the |
| 102 | + following conditions hold: |
| 103 | + 1. skipDefaults is enabled. |
| 104 | + 2. instance has same name fields on different inheritance levels. |
| 105 | + 3. instance defines default values on each level. |
| 106 | + 4. subfield has default value, while superfield as non-default value. |
| 107 | + 5. superfield is the 1st XML field of it's declaring class. |
| 108 | + 6. instance is not serializable. |
| 109 | +- BACKWARD COMPATIBLE: version 1.3.5 is configured to be compatible with |
| 110 | + XML outputted by versions 1.3.5 down to 1.2.1 and will produce only |
| 111 | + 1.3.5 formatted XML. |
| 112 | + |
| 113 | + |
| 114 | +!Release 1.3.4 |
| 115 | +- performance: n.s.e.XMLWriterTextDriver improvements allow EasyML to |
| 116 | + perform up to 20% faster. The performance improvement is more |
| 117 | + pronounced when pretty printing is enabled. |
| 118 | + |
| 119 | + |
| 120 | +!Release 1.3.3 |
| 121 | +- doc: better javadoc for n.s.e.EasyML, n.s.e.XMLReader, n.s.e.XMLWriter. |
| 122 | +- bugfix: include position descriptor in each InvalidFormatException case. |
| 123 | +- bugfix: n.s.e.XMLReaderTextDriver.consumeFully() fix. |
| 124 | + |
| 125 | + |
| 126 | +!Release 1.3.2 |
| 127 | +- performance: n.s.e.EasyML serialize() and deserialize() methods use |
| 128 | + ThreadLocal internally for XMLWriter and XMLReader instance reuse, |
| 129 | + in order to improve performance, while remaining thread-safe. |
| 130 | + |
| 131 | + |
| 132 | +!Release 1.3.1 |
| 133 | +- feature: added n.s.e.EasyML newReader() and newWriter methods in order |
| 134 | + to expose more API features at facade level. |
| 135 | +- bugfix: prevent shared-config readers and writers from allowing config |
| 136 | + modifications. |
| 137 | + |
| 138 | + |
| 139 | +!Release 1.3.0 |
| 140 | +- NON-BACKWARD COMPATIBLE refactor: |
| 141 | + merged n.s.e.ExtendedEasyML into n.s.e.EasyML. |
| 142 | +- feature: n.s.e.EasyML facade is now thread-safe while the thread-unsafe |
| 143 | + n.s.e.XMLReader and n.s.e.XMLWriter offer prototyping for faster per- |
| 144 | + thread copy instance creation. |
| 145 | +- feature: marshal- and unmarshal contexts are dateformat-aware. |
| 146 | +- revert: better XMLWriter and XMLReader close method impls because of |
| 147 | + multithread features. |
| 148 | +- bugfix: setCustomArrayTag validation fixed. |
| 149 | + Note: except for the last mentioned bugfix, all other changes were made |
| 150 | + to offer an easier and faster API for multithreaded environments. |
| 151 | + |
| 152 | + |
| 153 | +!Release 1.2.6 |
| 154 | +- feature: fail first security policy enforcement for n.s.e.XMLReader |
| 155 | + readObject and readArray. |
| 156 | +- bugfix: security policy now validates params at add and addHierarchy. |
| 157 | +- bugfix: consume remaining XML on security policy exception, to allow |
| 158 | + subsequent reads, if possible. |
| 159 | +- bugfix: better XMLWriter and XMLReader close method impls. |
| 160 | + |
| 161 | + |
| 162 | +!Release 1.2.5 |
| 163 | +- feature: n.s.e.EasyML and n.s.e.XMLReader: new securityPolicy settings |
| 164 | + used to configure, if needed, black- or whitelists for objects found at |
| 165 | + deserialization time. |
| 166 | + |
| 167 | + |
| 168 | +!Release 1.2.4 |
| 169 | +- NON-BACKWARD COMPATIBLE refactor: n.s.e.m.CompositeStrategy: removed the |
| 170 | + "defTarget" parameter as it was only used when skipDefaults was true |
| 171 | + and it was buggy in some cases such as a bean setting a property in a |
| 172 | + default sub-bean (composition, not inheritance) within it's default |
| 173 | + constructor. |
| 174 | + |
| 175 | + |
| 176 | +!Release 1.2.3 |
| 177 | +- feature: EasyML: added unregisterSimple() and unregisterComposite(). |
| 178 | + |
| 179 | + |
| 180 | +!Release 1.2.2 |
| 181 | +- refactor: CompositeWriter.endAttributes() now deprecated for simpler |
| 182 | + n.s.e.m.CompositeStrategy.marshal() implementation code. Use |
| 183 | + endElement() for endAttributes(true) and simply remove the |
| 184 | + endAttributes(false) invocations. |
| 185 | +- refactor: standard unmarshalling implementations now wrap exceptions |
| 186 | + into InvalidFormatException. |
| 187 | + |
| 188 | + |
| 189 | +!Release 1.2.1 |
| 190 | +- feature: XMLWriter and XMLReader: DTD and NON-DTD primitives are now |
| 191 | + configured to not create confusion between the default configuration |
| 192 | + and the primitives API. |
| 193 | +- feature: XMLWriter, XMLReader, and n.s.e.m.j.l.ArrayStrategy: array |
| 194 | + processing is now done with less reflection and no auto-boxing. |
| 195 | +- refactor: util package is now simpler and public. |
| 196 | +- bugfix: XMLWriter.flush() now sets underlying driver into initial state |
| 197 | + in case of further calls to write(). |
| 198 | +- bugfix: XMLReader now rechecks for easyml start tag after the easyml |
| 199 | + end tag event. |
| 200 | + |
| 201 | + |
| 202 | +!Release 1.2.0 |
| 203 | +- refactor: merged the two jars into a single jar, for simplicity, since |
| 204 | + the resulting easyml-1.2.0.jar is only ~370kB in size. Java plackage |
| 205 | + and class names remain the same. |
| 206 | +- feature: XMLWriter and XMLReader: added API for the Java primitive types |
| 207 | + to avoid autoboxing and casting. |
| 208 | +- feature: n.s.e.m.j.l.ArrayStrategy: uses the new primitives API for |
| 209 | + arrays of primitives (faster by ~7% for large primitive arrays, for |
| 210 | + example: the internal representation of GSCollections). |
| 211 | + |
| 212 | + |
| 213 | +!Release 1.1.1 |
| 214 | +- feature: XMLWriter.write(obj): write merges start-end tags if no value, |
| 215 | + just like n.s.e.m.j.l.ObjectStrategy does. |
| 216 | +- bugfix: XMLWriterTextDriver: fixed incorrect indentation of endTags. |
| 217 | + Regression since previous version (1.1.0). |
| 218 | +- bugfix: XMLReaderDOMDriver: fixed DOM impl of CompositeAttributeReader: |
| 219 | + should return null instead of "" for absent attributes. |
| 220 | + Note: indentation bug and start-end-merge enhancement relate to pretty |
| 221 | + printing and do not affect parsing. |
| 222 | + |
| 223 | + |
| 224 | +!Release 1.1.0 |
| 225 | +- feature: EasyML now provides API for working with XML already in W3C DOM |
| 226 | + documents form. |
| 227 | +- bugfix: XMLReader validation of simple and composite strategy names |
| 228 | + fixed at put(). |
| 229 | +- Javadoc: improved overall javadoc in package net.sourceforge.easyml. |
| 230 | + |
| 231 | + |
| 232 | +!Release 1.0.4 |
| 233 | +- feature: EasyML.deserialize can read multiple objects from same stream |
| 234 | + if deserialize is called with the same input argument. |
| 235 | +- feature: defined EasyML.setCustomStringTag and EasyML.setCustomArrayTag |
| 236 | + for customizing outputed XML, for example: "array" containing "string" |
| 237 | + can be customized to "names" containing "name". |
| 238 | +- bugfix: n.s.e.m.j.a.ColorStrategy: prevent Color static block from |
| 239 | + executing awt code on some JVMs. |
| 240 | + |
| 241 | + |
| 242 | +!Release 1.0.3 |
| 243 | +- feature: added strategies for Stack and TreeMap as part of |
| 244 | + n.s.e.ExtendedEasyML.Profile.GENERIC. |
| 245 | +- refactor: n.s.e.StrategyRegistry now an innerclass of n.s.e.XMLWriter. |
| 246 | +- refactor: n.s.e.ExtendedEasyML.Profile: LANGUAGE_SPECIFIC renamed to |
| 247 | + SPECIFIC. |
| 248 | +- refactor: n.s.e.ExtendedEasyML.Profile: refactored internal |
| 249 | + representation. |
| 250 | +- refactor: n.s.e.m.j.u.CollectionStrategy now sets ATTRIBUTE_SIZE so that |
| 251 | + subclasses don't have to. |
| 252 | + |
| 253 | + |
| 254 | +!Release 1.0.2 |
| 255 | +- feature: added java.util.Collections.singletonXXX() strategies to |
| 256 | + simplify the EasyML format for these types. |
| 257 | +- bugfix: n.s.e.m.j.i.SerializableStrategy: fixed Java IO Serialization |
| 258 | + PutFields/GetFields EasyML impl such that it is not mandatory to |
| 259 | + define both methods when custom serialization of a class is used. |
2 | 260 |
|
3 | | -http://sourceforge.net/projects/easyml-lib/ |
|
0 commit comments