Changelog History
Page 1
-
v2.8.8 Changes
May 08, 2020Value
- Predictable encoding conflict resolution by Ivan Abarca (#117066166f3)
Criteria
- ➕ Add
toLowerCase
/toUpperCase
functions toStringMatcher
(6e4dd31) - ➕ Add
GetByKey
/DeleteByKey
operations which allow low-level key lookups and deletions (ce9ad50) - ➕ Add
isNot(boolean)
function toBooleanMatcher
(c9c6305) - ➕ Add
is(Optional)
/isNot(Optional)
to genericOptionalValueMatcher
(0c2d47e) - ➕ Add
is(Optional)
/isNot(Optional)
functions toOptionalBooleanMatcher
(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 Changes
April 27, 2020Introduce 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
- 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)
- 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
- Use more efficient id lookups for key attributes in ElasticSearch backend (db4fa98)
Mongo
- 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:
- Javad Moghisi (@jmoghisi)
- Mitch Halpin (@kiddkaffeine)
- André Rouél (@arouel)
- Blake Hurlburt (@blakehurlburt)
- The Alchemis (@The-Alchemist)
- Charlie La Mothe (@clamothe)
- Pluggable KeyExtractor interface (3eb6958)
👍 2. Add projection support for iterable type(s) like
-
v2.8.4 Changes
April 27, 2020Introduce 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
- 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)
- 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
- Use more efficient id lookups for key attributes in ElasticSearch backend (db4fa98)
Mongo
- 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:
- Javad Moghisi (@jmoghisi)
- Mitch Halpin (@kiddkaffeine)
- André Rouél (@arouel)
- Blake Hurlburt (@blakehurlburt)
- The Alchemis (@The-Alchemist)
- Charlie La Mothe (@clamothe)
- Pluggable KeyExtractor interface (3eb6958)
👍 2. Add projection support for iterable type(s) like
-
v2.8.3 Changes
December 12, 2019🚀 Minor release fixing a couple of bugs in Geode backend :
- 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)
- Drop
ContainerResolver
interface (cb9d064) - Drop
NamingStrategy
interface (764d3b5)
-
v2.8.2 Changes
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 chainingDISTINCT / 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
- Escape reserved words (eg.
type
,time
) in Geode OQL (da9b7e1)
Codegen
- ✂ Remove unnecessary empty line between
hashCode()
andtoString()
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
andjackson-datatype-jdk8
totest
in ElasticSearch backend. They were used only in tests. - Enable errorprone static analysis in criteria module (ef5f1a267)
Thanks to all contributors:
-
v2.8.1 Changes
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 toCOUNT(*)
in SQLrepository.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 javanull
(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 BSONundefined
type translated to javanull
bson4gson
adapter. Friendlier type conversion between BSON temporal types and java numbers (int / long etc.)bson4gson
adapter. Fixpeek()
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 tohashCode()
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 Changes
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:
- Compile-time checking and type safety allows for much fewer mistakes
- IDE auto-completion guides through the choice of fields and operators
- 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:
- Derive immutable implementation, query DSL, repository and more from a single definition 🔀 2. Pluggable Sync / Async / Reactive execution models
- 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 Changes
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
)
- Propagate checked exceptions in
- Issues 2.7.4