Update changelog for Moshi 1.2.0.

This commit is contained in:
jwilson
2016-05-28 14:25:36 -04:00
parent c4896fdaed
commit 1537e03b77
2 changed files with 63 additions and 38 deletions

View File

@@ -1,56 +1,81 @@
Change Log Change Log
========== ==========
## Version 1.2.0
_2016-05-28_
* New: Take advantage of Okio's new `Options` feature when reading field names and enum values.
This has a significant impact on performance. We measured parsing performance improve from 89k
ops/sec to 140k ops/sec on one benchmark on one machine.
* New: Upgrade to Okio 1.8.0.
```xml
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.8.0</version>
</dependency>
```
* New: Support types that lack no-argument constructors objects on Android releases prior to
Gingerbread.
* Fix: Add writer value overload for boxed booleans. Autoboxing resolves boxed longs and doubles
to `value(Number)`, but a boxed boolean would otherwise resolve to value(boolean) with an
implicit call to booleanValue() which has the potential to throw NPEs.
* Fix: Be more aggressive about canonicalizing types.
## Version 1.1.0 ## Version 1.1.0
_2016-01-19_ _2016-01-19_
* New: Support [RFC 7159][rfc_7159], the latest JSON specification. This removes the constraint * New: Support [RFC 7159][rfc_7159], the latest JSON specification. This removes the constraint
that the root value must be an array or an object. It may now take any value: array, object, that the root value must be an array or an object. It may now take any value: array, object,
string, number, boolean, or null. Previously this was only permitted if the adapter was string, number, boolean, or null. Previously this was only permitted if the adapter was
configured to be lenient. configured to be lenient.
* New: Enum constants may be annotated with `@Json` to customize their encoded value. * New: Enum constants may be annotated with `@Json` to customize their encoded value.
* New: Create new builder from Moshi instance with `Moshi.newBuilder()`. * New: Create new builder from Moshi instance with `Moshi.newBuilder()`.
* New: `Types.getRawType()` and `Types.collectionElementType()` APIs to assist in defining generic * New: `Types.getRawType()` and `Types.collectionElementType()` APIs to assist in defining generic
type adapter factories. type adapter factories.
## Version 1.0.0 ## Version 1.0.0
_2015-09-27_ _2015-09-27_
* **API Change**: Replaced `new JsonReader()` with `JsonReader.of()` and `new JsonWriter()` with * **API Change**: Replaced `new JsonReader()` with `JsonReader.of()` and `new JsonWriter()` with
`JsonWriter.of()`. If your code calls either of these constructors it will need to be updated to `JsonWriter.of()`. If your code calls either of these constructors it will need to be updated to
call the static factory method instead. call the static factory method instead.
* **API Change**: Dont throw `IOException` on `JsonAdapter.toJson(T)`. Code that calls this method * **API Change**: Dont throw `IOException` on `JsonAdapter.toJson(T)`. Code that calls this
may need to be fixed to no longer catch an impossible `IOException`. method may need to be fixed to no longer catch an impossible `IOException`.
* Fix: the JSON adapter for `Object` no longer fails when encountering `null` in the stream. * Fix: the JSON adapter for `Object` no longer fails when encountering `null` in the stream.
* New: `@Json` annotation can customize a field's name. This is particularly handy for fields whose * New: `@Json` annotation can customize a field's name. This is particularly handy for fields
names are Java keywords, like `default` or `public`. whose names are Java keywords, like `default` or `public`.
* New: `Rfc3339DateJsonAdapter` converts between a `java.util.Date` and a string formatted with * New: `Rfc3339DateJsonAdapter` converts between a `java.util.Date` and a string formatted with
RFC 3339 (like `2015-09-26T18:23:50.250Z`). This class is in the new `moshi-adapters` subproject. RFC 3339 (like `2015-09-26T18:23:50.250Z`). This class is in the new `moshi-adapters`
You will need to register this adapter if you want this date formatting behavior. See it in subproject. You will need to register this adapter if you want this date formatting behavior.
action in the [dates example][dates_example]. See it in action in the [dates example][dates_example].
* New: `Moshi.adapter()` keeps a cache of all created adapters. For best efficiency, application * New: `Moshi.adapter()` keeps a cache of all created adapters. For best efficiency, application
code should keep a reference to required adapters in a field. code should keep a reference to required adapters in a field.
* New: The `Types` factory class makes it possible to compose types like `List<Card>` or * New: The `Types` factory class makes it possible to compose types like `List<Card>` or
`Map<String, Integer>`. This is useful to look up JSON adapters for parameterized types. `Map<String, Integer>`. This is useful to look up JSON adapters for parameterized types.
* New: `JsonAdapter.failOnUnknown()` returns a new JSON adapter that throws if an unknonw value is * New: `JsonAdapter.failOnUnknown()` returns a new JSON adapter that throws if an unknonw value is
encountered on the stream. Use this in development and debug builds to detect typos in field encountered on the stream. Use this in development and debug builds to detect typos in field
names. This feature shouldnt be used in production because it makes migrations very difficult. names. This feature shouldnt be used in production because it makes migrations very difficult.
## Version 0.9.0 ## Version 0.9.0
_2015-06-16_ _2015-06-16_
* Databinding for primitive types, strings, enums, arrays, collections, and maps. * Databinding for primitive types, strings, enums, arrays, collections, and maps.
* Databinding for plain old Java objects. * Databinding for plain old Java objects.
* [JSONPath](http://goessner.net/articles/JsonPath/) support for both `JsonReader` and * [JSONPath](http://goessner.net/articles/JsonPath/) support for both `JsonReader` and
`JsonWriter`. `JsonWriter`.
* Throw `JsonDataException` when theres a data binding problem. * Throw `JsonDataException` when theres a data binding problem.
* Adapter methods: `@ToJson` and `@FromJson`. * Adapter methods: `@ToJson` and `@FromJson`.
* Qualifier annotations: `@JsonQualifier` to permit different type adapters for the same Java type. * Qualifier annotations: `@JsonQualifier` to permit different type adapters for the same Java
* Imported code from Gson: `JsonReader`, `JsonWriter`. Also some internal classes: type.
`LinkedHashTreeMap` for hash-collision avoidance and `Types` for typesafe databinding. * Imported code from Gson: `JsonReader`, `JsonWriter`. Also some internal classes:
`LinkedHashTreeMap` for hash-collision avoidance and `Types` for typesafe databinding.
[dates_example]: https://github.com/square/moshi/blob/master/examples/src/main/java/com/squareup/moshi/recipes/ReadAndWriteRfc3339Dates.java [dates_example]: https://github.com/square/moshi/blob/master/examples/src/main/java/com/squareup/moshi/recipes/ReadAndWriteRfc3339Dates.java

View File

@@ -455,12 +455,12 @@ Download [the latest JAR][dl] or depend via Maven:
<dependency> <dependency>
<groupId>com.squareup.moshi</groupId> <groupId>com.squareup.moshi</groupId>
<artifactId>moshi</artifactId> <artifactId>moshi</artifactId>
<version>1.1.0</version> <version>1.2.0</version>
</dependency> </dependency>
``` ```
or Gradle: or Gradle:
```groovy ```groovy
compile 'com.squareup.moshi:moshi:1.1.0' compile 'com.squareup.moshi:moshi:1.2.0'
``` ```
Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap]. Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap].