# CHANGELOG
## [0.4.0] - 2023-01-29
### Added
* Add support for deriving `FromJava` implementations for more types. It is
now possible to use unit structs and structs with unnamed fields. Enums can
now be used to deserialize multiple different Java types into a single Rust
type. This is intended to be used to support Java polymorphism.
* Add `from` attribute to derive macro. This allows a type `T` to implement
`FromJava` by deserializing to type `S` and then converting tp `T` where
`T` implements `From<S>`.
### Removed
* The `anno` field attribute when deriving `FromJava` has now been merged with
the `extract` attribute.
### Breaking Changes
* As above, the `extract` attribute for fields when deriving `FromJava` now
takes a path and an optional annotation number (eg
`extract(path::to::function, 2)` instead of there being a separate `anno`
attribute for the annotation number.
### Deprecated
* `renaming` feature. This was originally behind a feature as it introduced an
additional dependency. The functionality it offered is now included in the
main jaded-derive crate so this feature is no longer required.
Warnings are emitted if the feature is enabled while using a nightly version
of rust.
## [0.3.0] - 2021-05-03
### Added
* AnnotationIter for reading data from objects with writeObject methods.
This gives a similar interface to ObjectInputStream.
* FromJava derive macro to automatically derive FromValue for structs
representing classes that have no custom writeObject method. This is behind
a feature flag ('derive').
* Add attributes to allow custom writeObject data to be read from values using
AnnotationIter.
### Removed
* FromPrimitive - It caused problems with blanket implementations for common
structs (eg Box<T>). As this was private/internal it should not be a breaking
change.
### Breaking Changes
* Value::get_annotations now returns an AnnotationIter instead of a
Vec<Content>. This lets binary data and objects be read directly from
the stream.
* Rename FromValue to FromJava. This matches the derive macro name and hopefully
reduces confusion around deriving one thing to implement another.
## [0.2.0] - 2021-03-15
### Added
* Enabled reading of classes with custom writeObject methods
* Add FromValue trait for conversion to Rust structs
### Other changes
* Remove Cargo.lock file - I think this is ignored for libraries anyway
### Breaking changes
* PrimitiveType::Char now holds a `char` instead of `[u8; 2]`
## [0.1.1] - 2021-02-20
### Removed
* Binary/executable - it was included in initial release by mistake and
gave an error when run.
## [0.1.0] - 2021-02-12
Initial Release