All Versions
56
Latest Version
Avg Release Cycle
59 days
Latest Release
27 days ago

Changelog History
Page 1

  • v2.8.8

    May 08, 2020

    Value

    Criteria

    • ➕ Add toLowerCase / toUpperCase functions to StringMatcher (6e4dd31)
    • ➕ Add GetByKey / DeleteByKey operations which allow low-level key lookups and deletions (ce9ad50)
    • ➕ Add isNot(boolean) function to BooleanMatcher (c9c6305)
    • ➕ Add is(Optional) / isNot(Optional) to generic OptionalValueMatcher (0c2d47e)
    • ➕ Add is(Optional) / isNot(Optional) functions to OptionalBooleanMatcher (c41ffaf)

    ⬆️ Dependency Upgrades

    • mongo-java-server 1.19.0 -> 1.28.0 (493eafe)
    • 🔀 mongo java driver (sync) 3.11.0 -> 3.12.3 (22337f3)
    • mongo java driver (reactive streams) 1.12.0 -> 1.13.1 (1c34b7f)
    • jackson-databind 2.8.11.4 -> 2.8.11.6 (8a2aa88)
    • rxjava2 2.2.12 -> 2.2.19 (be75e8d)
    • Project Reactor 3.2.12 -> 3.3.5 (13932b2)
    • ⬆️ JUnit5 upgrade 5.5.2 -> 5.6.2 (b0b0a8a)

    Contributors

    Thanks to all contributors. In no particular order:

  • v2.8.7

    April 29, 2020
  • v2.8.6

    April 27, 2020

    Introduce KeyExtractor interface to Criteria for pluggable entity key definition and extraction. Other improvements in different backend implementations.

    👌 Support for Modifiables to extend an inner class/interface.

    Value

    👍 1. Add support for Modifiable to extend an inner class/interface by Mitch Halpin (67f8083)

    Criteria

    1. Pluggable KeyExtractor interface (3eb6958) 👍 2. Add projection support for iterable type(s) like List<String> (78c7c29) 👍 3. Add support for Fugue Option to CriteriaModel by Charlie La Mothe (207d631)

    Geode

    ✅ 1. add tests for generating OQL expressions by Javad Moghisi (0c5e5e3)

    1. include order by direction in OQL by Javad Moghisi (5c3d15b) 👍 3. add support for Iterable Size and Contains to OQL Generator by Javad Moghisi (cfb514b) 👍 4. add support for String Operators to OQL Generator by Javad Moghisi(43f4fff)

    ElasticSearch

    1. Use more efficient id lookups for key attributes in ElasticSearch backend (db4fa98)

    Mongo

    1. Add mongo optimization to convert $in/$nin into $eq/$ne for single element array (09c002c)

    Mongo Repositories (legacy)

    ⚠ 1. Fix suppress warnings for generated MongoDB repositories by André Rouél (1afdfa4)

    Contributors

    Thanks to all contributors! In no particular order:

  • v2.8.4

    April 27, 2020

    Introduce KeyExtractor interface to Criteria for pluggable entity key definition and extraction. Other improvements in different backend implementations.

    👌 Support for Modifiables to extend an inner class/interface.

    Value

    👍 1. Add support for Modifiable to extend an inner class/interface by Mitch Halpin (67f8083)

    Criteria

    1. Pluggable KeyExtractor interface (3eb6958) 👍 2. Add projection support for iterable type(s) like List<String> (78c7c29) 👍 3. Add support for Fugue Option to CriteriaModel by Charlie La Mothe (207d631)

    Geode

    ✅ 1. add tests for generating OQL expressions by Javad Moghisi (0c5e5e3)

    1. include order by direction in OQL by Javad Moghisi (5c3d15b) 👍 3. add support for Iterable Size and Contains to OQL Generator by Javad Moghisi (cfb514b) 👍 4. add support for String Operators to OQL Generator by Javad Moghisi(43f4fff)

    ElasticSearch

    1. Use more efficient id lookups for key attributes in ElasticSearch backend (db4fa98)

    Mongo

    1. Add mongo optimization to convert $in/$nin into $eq/$ne for single element array (09c002c)

    Mongo Repositories (legacy)

    ⚠ 1. Fix suppress warnings for generated MongoDB repositories by André Rouél (1afdfa4)

    Contributors

    Thanks to all contributors! In no particular order:

  • v2.8.3

    December 12, 2019

    🚀 Minor release fixing a couple of bugs in Geode backend :

    1. Use JDK collections for geode bind variables when sending query to server (7cc1fb8) 🚀 2. Prefer Region.getAll() method for queries which filter only on ID attribute (5426af6)
    2. Drop ContainerResolver interface (cb9d064)
    3. Drop NamingStrategy interface (764d3b5)
  • v2.8.2

    November 16, 2019

    🛠 Main feature of this release is DISTINCT statement in Criteria. Plus, small functionalities and bugfixes.

    Notable changes

    Criteria

    • 👌 Support for DISTINCT modifier in queries. Simple DSL to allow chaining DISTINCT / LIMIT / OFFSET modifiers (9d639225)

      // example of DISTINCT queryrepository.find(person.isActive.isTrue()) .orderBy(person.name.asc()) .select(person.name) .distinct() .limit(2) .fetch();

    Geode backend

    Codegen

    • ✂ Remove unnecessary empty line between hashCode() and toString() functions introduced by previous commit
    • ⚠ Suppress ErrorProne error (with @SuppressWarnings(Immutable)) for lazy hashCode field (#1114)

    Gson / JSON Adapters

    • 🛠 Fixed issue where integers are always printed as doubles (#1120) by Ben Mazzarol (@bmazzarol)
    • 🛠 Fixed issue using the jackson XML streaming parser where boolean tokens are always strings (#1120) by Ben Mazzarol (@bmazzarol)

    Other changes

    • 🔄 Change dependency scope of jackson-datatype-guava and jackson-datatype-jdk8 to test in ElasticSearch backend. They were used only in tests.
    • Enable errorprone static analysis in criteria module (ef5f1a267)

    Thanks to all contributors:

  • v2.8.1

    October 19, 2019

    🚀 Immutables team is happy to announce Immutables 2.8.1 release.

    🛠 This release 2.8.1 comes one month after 2.8.0 and contains several improvements, bugfixes and new functionalities.

    Notable changes

    Criteria

    • 👀 Generate criteria DSL from existing JavaBeans(spec) classes. Useful for projects which use JavaBeans for legacy reasons or not yet fully migrated to immutables. See #1103
    • 🔌 Pluggable ID resolution. Introduce IdResolver interface to allow users to provide their own annotations (or logic) for ID attribute selection. It complements default @Criteria.Id annotation.
    • 🎉 Initial support for partial updates. Allow partial changes to be applied directly by the backend (if supported).

      repository.update(person.id.is(123)) .set(person.name, "Changed Name") .set(person.age, 33) .execute()

    • 👌 Support top-level count() operation similar to COUNT(*) in SQL

      repository.findAll().count(); repository.find(person.age.greaterThan(33)).count();

    • ➕ Add upsert / update operations on entity in Writable interface

    Mongo jackson adapter

    • 👌 Support BSON undefined type which is converted to java null (9a64881)
    • 👌 Support BSON binary data (76fb7b44)
    • 🐎 Lazily read values from bson stream (1c07466). Potentially a performance improvement since values don't have to be deserialized unless required by deserializer. Allows faster skipChildren() calls.
    • 👉 Make BsonGenerator null safe on strings and numbers (ba78d7)

    Mongo repositories

    🔄 Changes related to mongo repositories (predecessor to criteria).

    • Enable _id initialization in MongoDB (#1074). PR from André Rouél
    • 👍 bson4gson adapter. Support BSON undefined type translated to java null
    • bson4gson adapter. Friendlier type conversion between BSON temporal types and java numbers (int / long etc.)
    • bson4gson adapter. Fix peek() method in JsonReader (6f1247)
    • Require Java 8

    Codegen

    • 👌 Support lazy hashing via lazyhash attribute. Contrary to existing prehash, lazyhash would compute hashcode on first access to hashCode() method.
    • 🔄 Changed how META-INF/annotations/org.immutables.value.immutable is read - disabled URLConnection caching. PR-1060 from Canay ÖZEL
    • 0️⃣ Set optBits for Modifiable, Default maps. PR-1086 from Dylan Wragge

    ⬆️ Third party library upgrades and other dependencies

    • Jackson databind 2.8.11.3 -> 2.8.11.4 (9ea18)
    • 🔀 Mongo java (sync) driver 3.10.1 -> 3.11.0 (33f98d4)
    • Mongo reactive streams 1.11 -> 1.12 (fed2e07)
    • rxjava2 2.2.10 -> 2.2.12 (c6e06ce)
    • ErrorProne 2.3.2 -> 2.3.3 (b62fab4f)
    • ✂ Remove utility maven module (1089). All modules will declare dependencies explicitly.

    Thanks to all contributors. In no particular order:

  • v2.8.0

    September 20, 2019

    🛠 (not a bugfix release yet, sorry, expect more bugfixes in 2.8.x versions)

    2.8.0 is available on Maven Central now

    Criteria & Repositories API

    Combine power of immutable objects with the flexibility of querying them

    🚀 Immutables team is pleased to announce Immutables 2.8.0 release.

    🚀 Major focus of this release was Criteria API which enables
    👉 users to generate model-specific query DSL. Generated class (along with criteria runtime) allows accessing different backends in a unified, fluent and type-safe manner.

    Benefits over raw driver API usage or string based abstractions (DSLs) are:

    1. Compile-time checking and type safety allows for much fewer mistakes
    2. IDE auto-completion guides through the choice of fields and operators
    3. Best in class readability due to drastically reduced number of parentheses and specially designed DNF approach ♻️ 4. Easier model refactoring

    Benefits over existing frameworks like Spring Data, Morphia, QueryDSL or jOOQ are:

    1. Derive immutable implementation, query DSL, repository and more from a single definition 🔀 2. Pluggable Sync / Async / Reactive execution models
    2. Pluggable backend implementations 📄 4. Generated or custom Repositories (aka DAOs) can be controlled to generate reading / writing or watching operations on entities

    🚀 Full release announcement here: https://github.com/immutables/immutables.github.io/blob/src/2.8.0-release.md
    Getting started with criteria API: https://immutables.github.io/criteria.html

  • v2.7.5

    January 14, 2019
  • v2.7.4

    December 25, 2018
    • 🛠 Bugfix and refinements release! Thank you issue reports and PRs!
    • Notable stuff
      • Propagate checked exceptions in throws for lazy attributes (only for @Value.Lazy)
    • Issues 2.7.4