All Versions
Latest Version
Avg Release Cycle
125 days
Latest Release
1437 days ago

Changelog History
Page 1

  • v1.7.4 Changes

    July 08, 2020
    • Stop the LazyInit annotation from getting shaded by Maven, so that AutoValue can find it on the classpath. (b484417)
    • ๐Ÿ›  Fixed handling of @Nullable Optional<T> foo() properties being set by setFoo(@Nullable T) setters. Now setFoo(null) results in Optional.empty(), not null. (d9d66ad)
  • v1.7.3 Changes

    June 10, 2020
    • ๐Ÿ— Optionally copy annotations from the @AutoValue.Builder class to the generated subclass. (b22f969)
    • โฌ‡๏ธ Drop unnecessary parentheses in AutoAnnotation equals and hashCode methods. (b9ba06a)
    • ๐Ÿ›  Fixed a problem when an @AutoValue class references types that are generated by other annotation processors. (2797d38)
  • v1.7.2 Changes

    May 13, 2020

    ๐Ÿš€ Only one change in this release:

    • AutoValue is once again "isolating" for Gradle incremental compilation. (8e7515a)
  • v1.7.1 Changes

    May 01, 2020

    ๐Ÿ†• New features

    • ๐Ÿ”ง SerializableAutoValue extension. This can be used to serialize @AutoValue classes with properties of type java.util.Optional, even though java.util.Optional is not serializable, and it can also be configured to serialize other arbitrary types. Thanks to @alvinlao for this contribution! (f91d2fe)
    • ๐Ÿ— The logic for determining if we can make a BarBuilder out of a Bar has been generalized. For example, if your @AutoValue class Foo has a property IntList ints(), then your builder can have IntListBuilder intsBuilder(). Previously this worked if there was no Foo.toBuilder() method, or if IntList had its own toBuilder() method. Now it also works if it is possible to call IntListBuilder.addAll(IntList). (6aeb44f)
    • ๐Ÿ‘ Allow boxed @autovalue properties to be set from the corresponding primitive type. (2bbe506)

    Behaviour changes

    • ๐Ÿ— AutoValue now gives a warning if the static builder() method is inside the @AutoValue.Builder class instead of directly in the @autovalue class. (fcccded)
    • AutoValue doesn't generate code or invoke extensions if it detects a problem, for example a mismatch between getters and setters. (ecb6032)
    • AutoOneOf factory methods for void values now have type parameters if the @AutoOneOf class does. (4ab1b53)
    • ๐Ÿ— It is now a compilation error if a setter method in a builder has a parameter marked @nullable when the corresponding property is not in fact @nullable. This already generated a NullPointerException at runtime. (bd7bed2)
    • The @memoized annotation now has class-level retention, rather than source-level. (107694b)

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  We fixed an issue with type checking of setter parameters in the presence of inheritance and generics. (e97d1f0)
    • ๐Ÿ‘ We now generate a better toString() for arrays in AutoOneOf (0a7c049)


    • โœ… We added CompileWithEclipseTest, which checks that AutoValue works with ecj, the Eclipse compiler. (05e983c)
  • v1.7 Changes

    October 10, 2019

    This is the same as 1.7rc1, with one small addition:

    • โž• Add a way for extensions to retrieve the name of the final AutoValue_Foo class. (4543619)

    ๐Ÿ— Thanks to @bryanstern for checking that the API changes for builder introspection do indeed work in a real extension.

  • v1.7.rc1 Changes

    October 01, 2019
    • โž• Add an API to allow AutoValue extensions to find out about builders. (86f4563)
    • ๐Ÿ— The generated AutoValue builder class is no longer final if there are extensions generating code. This means that extensions can subclass Builder to modify or extend its functionality. (49fbf55)
    • ๐Ÿ— Property builders now work correctly when their actual return type is different from the corresponding property type because of type variable substitution. (7646889)
    • ๐Ÿ‘ Allow @AutoValue getters to define properties that are not valid Java identifiers, for example get1st(). (6dfa04e)
    • โž• Add a propertyTypes() method to AutoValueExtension.Context, to allow extensions to see the true type of every property. In preference to properties().get(p).getReturnType(), extensions should use propertyTypes().get(p). (99ae134)
  • v1.6.6 Changes

    August 19, 2019
    • ๐Ÿ‘ Allow @AutoOneOf properties to be void. An abstract void method means that the associated kind has no value. The factory method has no parameter and calling the implementation of the void method does nothing unless the instance is of another kind. (48d6557)
    • Shade org.checkerframework in the auto-value jar. (f89da91)
    • Primitive arrays now work in @AutoOneOf classes. (81134b5)
    • In AutoValue code, include type annotations in bounds of type-parameter declarations. (ca013a2)
    • ๐Ÿ– Handle inner classes correctly when the outer class has a type parameter. (4259261)
    • โš  Use the short form of annotations in generated code. For example, instead of @SuppressWarnings(value = {"mutable"}), write @SuppressWarnings("mutable"). (b2eb535)
    • ๐Ÿ‘‰ Use ImmutableSortedSet.copyOfSorted and .naturalOrder where appropriate. (a0de99b)
    • โ†ช Work around an Eclipse compiler bug where static interface methods are incorrectly shown as being inherited. (3854a65)
    • ๐Ÿ— Handle GWT serialization when some of the properties use property builders. (445b9ed)
  • v1.6.5 Changes

    April 10, 2019

    This is identical to 1.6.4 except for the following:

    • ๐Ÿ›  Fix an intermittent issue with AutoValue extensions and Gradle. (0cced0d)
  • v1.6.4 Changes

    April 05, 2019
    • ๐Ÿ‘ป More detailed exception information if AutoValue extensions cannot be loaded. (67e172e)
    • โ†ช Expand the exceptions covered by the workaround for a JDK8 jar bug. (f17d298)
    • ๐Ÿ‘Œ Support @CopyAnnotations in classes generated by MemoizeExtension. (bf27cab)
    • ๐Ÿ‘Œ Improved type checking for builder setter parameters. (8d6111d, efd48fd)
    • โž• Added MoreTypes.asIntersection() (c16ef66)
    • It is a compilation error for an @AutoOneOf property to be @nullable since null values are not in fact accepted. (9cf9999)
    • ๐Ÿ‘ AutoValue extensions can now declare supported options. (175e323)
    • In AutoValue, @CopyAnnotations.exclude now affects type annotations. (3ee205b)
  • v1.6.3 Changes

    December 11, 2018
    • ๐Ÿ— Make AutoValue and AutoService support Gradle incremental build. Thanks to Thomas Broyer for this work. (a5673d0)
    • โšก๏ธ When hashCode() is @Memoized, equals() will be optimized to check hash codes first before other properies (34a6a03)
    • ๐Ÿ“ MemoizeExtension recognises @Nullable type annotations, not just method annotations. (66a57ec)
    • โœ‚ Remove unnecessary parentheses from the generated equals(Object) method in @AutoValue classes. (a5387a6)
    • ๐Ÿ“š Clarify the AutoValueExtension documentation to explain how subclassing works in the code generated by extensions. (73e848a)
    • ๐Ÿ‘ GwtSerialization support now works in the presence of AutoValue extensions. (9cc04ec)
    • โœ‚ Remove the need for the java.desktop module on Java 9+. (f878642)