# Jackson

Published articles for Jackson.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator)

DevFeed: [Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator)](<https://devfeed.tech/articles/resolving-exception-cannot-deserialize-from-object-value-no-delegate-or-property-based-creator-17378.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-jackson-fix-no-creator-exception>)

Author: Martin Blažević

Published: 2026-09-14T04:21:09Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jackson-exception](<https://devfeed.tech/tags/jackson-exception.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [library](<https://devfeed.tech/tags/library.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains why Jackson can throw InvalidDefinitionException when it cannot determine how to construct an object during JSON deserialization. It demonstrates the problem with an immutable class and presents solutions including a no-argument constructor, property-based creators using @JsonCreator and @JsonProperty, and annotated factory methods. It also notes the correct annotation package for Jackson 3.x.

### Source excerpt

During JSON deserialization, Jackson may throw an InvalidDefinitionException when it can't determine how to create an instance of the target class. In this article, you'll learn how to fix this in Jackson 2.x and 3.x. The post Resolving Exception: Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator) first appeared on Baeldung.

## What's New in Jackson 3?

DevFeed: [What's New in Jackson 3?](<https://devfeed.tech/articles/what-s-new-in-jackson-3-4496.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-jackson-3-updates>)

Author: Mateusz Szablak

Published: 2026-09-10T19:10:48Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jackson-basics](<https://devfeed.tech/tags/jackson-basics.md>), [jackson-jackson-basics](<https://devfeed.tech/tags/jackson-jackson-basics.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [migration](<https://devfeed.tech/tags/migration.md>), [popular](<https://devfeed.tech/tags/popular.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial on Jackson 3.0's architectural and migration changes from Jackson 2.x, including its Java 17 baseline, new artifact and package names, Android considerations, and removed deprecated APIs.

### Source excerpt

Learn what's new in Jackson 3, how it differs from Jackson 2, and what you need to do in order to migrate from Jackson 2.x to the new version. The post What's New in Jackson 3? first appeared on Baeldung.

## How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate

DevFeed: [How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate](<https://devfeed.tech/articles/how-to-fix-jackson-json-parse-error-can-not-construct-instance-of-java-time-localdate-4494.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-fix-jackson-json-parse-error>)

Author: Hiks Gerganov

Published: 2026-08-22T23:26:23Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [LocalDate](<https://devfeed.tech/topics/localdate.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [ISO 8601](<https://devfeed.tech/topics/iso-8601.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [errors](<https://devfeed.tech/tags/errors.md>), [exception](<https://devfeed.tech/tags/exception.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jackson-java-dates-exception-localdate](<https://devfeed.tech/tags/jackson-java-dates-exception-localdate.md>), [java](<https://devfeed.tech/tags/java.md>), [java-dates](<https://devfeed.tech/tags/java-dates.md>), [json](<https://devfeed.tech/tags/json.md>), [learn](<https://devfeed.tech/tags/learn.md>), [localdate](<https://devfeed.tech/tags/localdate.md>), [post](<https://devfeed.tech/tags/post.md>), [time](<https://devfeed.tech/tags/time.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial explains why Jackson may fail to deserialize JSON date values into Java's LocalDate or LocalDateTime, even when the JSON uses ISO-8601 formatting. It examines Jackson version support, missing Java Time module configuration, unsupported date formats, and mismatched date-time types, then presents ways to address the problem.

### Source excerpt

Learn why sometimes Jackson can't construct an instance of LocalDate or LocalDateTime and how to fix the error it throws. The post How to Fix Jackson JSON Parse Error Can not construct instance of java.time.LocalDate first appeared on Baeldung.

## Automating Code Modernization with OpenRewrite - By Stefano Dalla Palma, Adyen

DevFeed: [Automating Code Modernization with OpenRewrite - By Stefano Dalla Palma, Adyen](<https://devfeed.tech/articles/automating-code-modernization-with-openrewrite-by-stefano-dalla-palma-adyen-26256.md>)

Original publisher: [Read original article](<https://medium.com/adyen/automating-code-modernization-with-openrewrite-by-stefano-dalla-palma-adyen-9abe39a9082a?source=rss----64941d9fbc09---4>)

Author: Adyen

Published: 2026-08-22T06:45:48Z

Content type: article

Language: en

Sources: [Adyen Tech](<https://devfeed.tech/sources/adyen-tech.md>)

Topics: [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [code-review](<https://devfeed.tech/tags/code-review.md>), [internal-developer-platform](<https://devfeed.tech/tags/internal-developer-platform.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [migration](<https://devfeed.tech/tags/migration.md>), [modernization](<https://devfeed.tech/tags/modernization.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [software](<https://devfeed.tech/tags/software.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [tech](<https://devfeed.tech/tags/tech.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

An Adyen engineering team explores using OpenRewrite to automate code modernization and reduce the manual effort of framework, API, and static-analysis updates. The article describes a completed migration of an internal Jackson 2 wrapper to Jackson 3 across hundreds of modules and discusses integrating the tool into the build and CI workflow.

### Source excerpt

Automating Code Modernization with OpenRewriteBy Stefano Dalla Palma - Development Tooling Engineer, Adyen In a large-scale engineering organization such as Adyen, where hundreds of developers produce hundreds of merge requests per day across thousands of modules, continuously evolving code to meet the latest standards is essential for long-term platform health and performance. However, executing routine updates manually, such as adopting new framework patterns, keeping up with API enhancements, or fine-tuning static analysis rules can introduce friction that takes developers away from building core features. When I joined Adyen's internal developer platform team, I wanted to understand whether any of that friction could be automated away. Around that time, I came across an episode of Software Engineering Radio (link) where the creator of OpenRewrite made an argument that stuck with me: "We are asking framework authors to start taking responsibility for providing recipes when they make breaking changes." I loved that framing. The hassle of keeping up shouldn't fall entirely on the consumers of a library, but on the people who changed the contract in the first place. While we couldn't change how external maintainers worked, we could adopt that mindset internally. I saw an opportunity: if a tool could absorb the friction of a breaking change, we could handle the cleanup on behalf of our developers. But my enthusiasm wasn't going to convince anyone. The engineers I pitched to wanted to see it work before they'd trust it, and I don't blame them. The only way to earn trust was to do the work: pick a real use case, drive it to completion, and let the results speak. One team had a ticket to migrate an internal Jackson 2 wrapper to Jackson 3, a tricky refactoring with deep caller dependencies across hundreds of modules, exactly the kind of high-effort, lower-urgency work that teams understandably prioritize behind customer-facing delivery. I asked if I could take a shot at

## Keycloak 26.7.2 released

DevFeed: [Keycloak 26.7.2 released](<https://devfeed.tech/articles/keycloak-26-7-2-released-31788.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2026/08/keycloak-2672-released>)

Author: Keycloak Team

Published: 2026-08-19T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Security](<https://devfeed.tech/topics/security.md>), [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [Quarkus](<https://devfeed.tech/topics/quarkus.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [WebAuthn](<https://devfeed.tech/topics/webauthn.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [account-takeover](<https://devfeed.tech/tags/account-takeover.md>), [cve](<https://devfeed.tech/tags/cve.md>), [idm](<https://devfeed.tech/tags/idm.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [password](<https://devfeed.tech/tags/password.md>), [quarkus](<https://devfeed.tech/tags/quarkus.md>), [release](<https://devfeed.tech/tags/release.md>), [resolved](<https://devfeed.tech/tags/resolved.md>), [saml](<https://devfeed.tech/tags/saml.md>), [security](<https://devfeed.tech/tags/security.md>), [sso](<https://devfeed.tech/tags/sso.md>)

### AI overview

Keycloak 26.7.2 is released with security fixes, a Quarkus upgrade, and additional bug fixes and enhancements. The release addresses issues including account takeover, permission bypasses, secret disclosure, and WebAuthn behavior.

### Source excerpt

To download the release go to Keycloak downloads. Upgrading Before upgrading refer to the migration guide for a complete list of changes. All resolved issues Security fixes #49570 CVE-2026-45292 OpenTelemetry Java SDK has Unbounded Memory Allocation in W3C Baggage Propagation dependencies #50616 [CVE-2026-14613] Keycloak 26.6.3 Fine-Grained Admin Permissions Bypass via Role Groups Endpoint admin/fine-grained-permissions #50955 [CVE-2026-59888 and CVE-2026-59889] Upgrade jackson-databind to 2.21.5 to fix #50966 [CVE-2026-15945] Group hierarchy search discloses hidden parent groups under FGAP v2 admin/fine-grained-permissions #51145 [CVE-2026-17048] Keycloak Admin REST API Leaks Vault-Resolved Rotated Client Secrets oidc #51832 CVE-2026-15571 Predictable account-linking hash enables account takeover via malicious oidc client #51833 CVE-2026-18963 Unauthenticated account takeover via reset-credentials flow bypass Weaknesses #50844 show-config prints the vault keystore password in cleartext dist/quarkus Enhancements #51344 Upgrade to Quarkus 3.33.3.1 Bugs #50751 Password denylist: false fpp warning on startup with large pre-computed .bloom file authentication #50849 Correct SCIM name.formated scim #50855 Rotated client secret remains valid when the feature is disabled oidc #51054 Invalid redirect URI on logout from pages with sub-tab hash fragments admin/ui #51061 Parameterized UserPropertyMapper exposes target user attributes without permission check core #51087 Passkey icons use wrong color variant when realm disables dark mode authentication/webauthn #51088 Verify email not working in incognito browser tab after Keycloak restart authentication #51131 Warning "Proactive closing of the session was missed - refinements are needed to TransactionSessionHandler related logic" appears core #51154 Upgrade to 26.7.0 fails with preview features as the stateless cluster provider captures a null NodeInfo before postInit infinispan #51164 WebAuthn tests are being skipped in Githu

## How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ

DevFeed: [How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ](<https://devfeed.tech/articles/how-to-turn-a-list-of-flat-elements-into-a-hierarchy-in-java-sql-or-jooq-28945.md>)

Original publisher: [Read original article](<https://blog.jooq.org/how-to-turn-a-list-of-flat-elements-into-a-hierarchy-in-java-sql-or-jooq/>)

Author: lukaseder

Published: 2023-03-24T15:45:28Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [collections](<https://devfeed.tech/tags/collections.md>), [collector](<https://devfeed.tech/tags/collector.md>), [collectors](<https://devfeed.tech/tags/collectors.md>), [hierarchical-sql](<https://devfeed.tech/tags/hierarchical-sql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [json](<https://devfeed.tech/tags/json.md>), [nested-collections](<https://devfeed.tech/tags/nested-collections.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [recursive-sql](<https://devfeed.tech/tags/recursive-sql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A tutorial on converting flat parent-child data into hierarchical structures using SQL, Java, or jOOQ. It compares a recursive PostgreSQL query with jOOQ 3.19 and a reusable pure-Java Collector, and discusses JSON serialization with Jackson and type inference considerations.

### Source excerpt

Occasionally, you want to write a SQL query and fetch a hierarchy of data, whose flat representation may look like this: The result might be: |id |parent_id|label | |---|---------|-------------------| |1 | |C: | |2 |1 |eclipse | |3 |2 |configuration | |4 |2 |dropins | |5 |2 |features | |7 |2 |plugins | |8 |2 ... Continue reading How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ ->

## Gson failure in end-to-end tests

DevFeed: [Gson failure in end-to-end tests](<https://devfeed.tech/articles/gson-failure-in-end-to-end-tests-27330.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/202201/gson-fail/>)

Published: 2022-01-23T00:00:00Z

Content type: article

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Gson](<https://devfeed.tech/topics/gson.md>), [Java](<https://devfeed.tech/topics/java.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>)

Tags: [e2e](<https://devfeed.tech/tags/e2e.md>), [enum](<https://devfeed.tech/tags/enum.md>), [gson](<https://devfeed.tech/tags/gson.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [tests](<https://devfeed.tech/tags/tests.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

This article explains that Gson can silently ignore JSON deserialization problems, such as an unknown enum value, allowing end-to-end tests to pass even when an API contract is broken. It contrasts this behavior with Jackson and describes migrating tests from Gson to Jackson.

### Source excerpt

Using Gson in your e2e tests might result in tests passing even when contract is broken. Gson is quite imprecise when it comes to deserializing objects from json. Is there any difference between an enum and a string? Is there any difference between s string and a number? Using Java you might answer: sure there is. Even when talking about JSON you'll answer: yeah there is a difference. But for GSON? Meh whatever. Read more

## Year in Review: 2021

DevFeed: [Year in Review: 2021](<https://devfeed.tech/articles/year-in-review-2021-37582.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/2021-into-2022/>)

Author: hello@taniarascia.com

Published: 2022-01-01T00:00:00Z

Content type: opinion

Language: en

Sources: [Tania Rascia](<https://devfeed.tech/sources/tania-rascia.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Code](<https://devfeed.tech/topics/code.md>), [Job](<https://devfeed.tech/topics/job.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [Netflix](<https://devfeed.tech/topics/netflix.md>), [sessions](<https://devfeed.tech/topics/sessions.md>)

Tags: [burnout](<https://devfeed.tech/tags/burnout.md>), [coding](<https://devfeed.tech/tags/coding.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [life](<https://devfeed.tech/tags/life.md>), [netflix](<https://devfeed.tech/tags/netflix.md>), [year-in-review](<https://devfeed.tech/tags/year-in-review.md>)

### AI overview

A personal review of 2021 reflecting on time spent away from home, maintaining balance among development work, side projects, and creative pursuits, and recovering from past burnout. The author also discusses cultural discoveries including Bo Burnham's Inside and The Beatles: Get Back documentary.

### Source excerpt

Wow, here we are, the sixth installment in the New Year series of posts. This year feels almost like a lost weekend. Aside from a few small...

## Custom Reactive JSON parsing

DevFeed: [Custom Reactive JSON parsing](<https://devfeed.tech/articles/custom-reactive-json-parsing-38647.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2021_06_08_custom_reactive_json_parsing/>)

Published: 2021-06-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Library](<https://devfeed.tech/topics/library.md>), [Android](<https://devfeed.tech/topics/android.md>), [client](<https://devfeed.tech/topics/client.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [gson](<https://devfeed.tech/tags/gson.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [json](<https://devfeed.tech/tags/json.md>), [json-parsing](<https://devfeed.tech/tags/json-parsing.md>), [moshi](<https://devfeed.tech/tags/moshi.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

This tutorial introduces JSON parsing in Android applications, compares common libraries, and describes a pet-project weather app that bundles a JSON city list for offline selection. It notes that this approach involves workarounds and would not be suitable for production.

### Source excerpt

Introduction Parsing JSON strings is a must-have on most Android projects that have server-client communication (of course there are some other formats like XML or Protobuf, but I guess JSON is the most common one at least at the moment). Setting up this communication is relatively straightforward: choose a library, add it to a project, describe models, create mappers, and so on. There are a bunch of various libraries to parse JSON: good old Gson, Jackson, or more modern Moshi, kotlinx-serialization and there are more. Set up of these libraries is different, there are differences in the internal implementation, but the general idea is the same for most of them: you can convert JSON-string into a set of objects and vice versa.

## Automatically align Dependencies with Platforms and Gradle Module Metadata

DevFeed: [Automatically align Dependencies with Platforms and Gradle Module Metadata](<https://devfeed.tech/articles/automatically-align-dependencies-with-platforms-and-gradle-module-metadata-24593.md>)

Original publisher: [Read original article](<https://blog.gradle.org/alignment-with-gradle-module-metadata>)

Author: Jendrik Johannes

Published: 2019-11-25T05:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [Library](<https://devfeed.tech/topics/library.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>)

Tags: [alignment](<https://devfeed.tech/tags/alignment.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [dependency-management](<https://devfeed.tech/tags/dependency-management.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [graph](<https://devfeed.tech/tags/graph.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [library](<https://devfeed.tech/tags/library.md>), [module](<https://devfeed.tech/tags/module.md>), [platforms](<https://devfeed.tech/tags/platforms.md>)

### AI overview

This Gradle article explains how dependency conflicts can produce inconsistent versions across related library modules. Using Jackson as an example, it describes how Gradle Module Metadata and platforms can express alignment information so that modules are upgraded together, while noting the limitations and maintenance costs of relying on BOMs alone.

### Source excerpt

This blogpost has been updated to reflect that Jackson started to published Gradle Module Metadata with version 2.12.0 using the recommendations from this post. In the previous post about dependency management with Gradle 6, we saw that growing builds can quickly end up in dependency hell. Unexpected results become particularly hard to analyze if they are introduced at the bottom of the dependency graph and propagate up through transitive dependencies. It is unfortunate that some of these issues could be avoided if the authors of libraries, which form the bottom of the dependency graph, had the means to express all the knowledge about the versioning of said libraries in the libraries' metadata. A typical example of such a library is the widely used JVM utility library Jackson. If several components of the library are part of the dependency graph, alignment of versions can be an issue. The Jackson library is made up of only three core modules: jackson-annotations, jackson-core and jackson-databind. Still, it is easily possible to end up in a situation where a higher version is selected for jackson-core than for jackson-databind. This situation is illustrated in the following example, where the two modules end up having different versions: jackson-core:2.9.2 and jackson-databind:2.8.9. In the example, which you can explore as a build scan, one transitive dependency (tika-parsers) upgraded jackson-core to 2.9.2 as Gradle resolves the conflict between 2.8.9 and 2.9.2 to the higher version. jackson-databind however, added via another dependency (keycloak-core), is kept on 2.8.9 as the information that it should be aligned, i.e. upgraded together, with jackson-core is missing. BOMs are great, but we don't use them (enough) The situation we face in this scenario is that the Jackson modules' versions should be aligned, but that information is not published due to limitations of the pom metadata format. What Jackson is publishing is a BOM (bill of materials), a pom.xml conta

## Avoiding dependency hell with Gradle 6

DevFeed: [Avoiding dependency hell with Gradle 6](<https://devfeed.tech/articles/avoiding-dependency-hell-with-gradle-6-24597.md>)

Original publisher: [Read original article](<https://blog.gradle.org/avoiding-dependency-hell-gradle-6>)

Author: Cédric Champeau

Published: 2019-11-11T05:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [dependency](<https://devfeed.tech/tags/dependency.md>), [dependency-management](<https://devfeed.tech/tags/dependency-management.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [graph](<https://devfeed.tech/tags/graph.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [scala](<https://devfeed.tech/tags/scala.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article explains how Gradle 6 addresses dependency hell in large projects. It describes problems such as incompatible versions, misaligned component dependencies, dynamic upgrades, vulnerable transitive dependencies, unused dependencies, and inconsistent versions across subprojects. Gradle 6 introduces richer module metadata to give dependency resolution more information for detecting and potentially fixing these issues.

### Source excerpt

Dependency hell is a big problem for many teams. The larger the project and its dependency graph, the harder it is to maintain it. The solutions provided by existing dependency management tools are insufficient to effectively deal with this issue. Gradle 6 aims at offering actionable tools that will help deal with these kind of problems, making dependency management more maintainable and reliable. Take, for example, this anonymized dependency graph from a real world project: There are hundreds of different libraries in this graph. Some are internal libraries, some are OSS libraries. A proportion of those modules see several releases a week. In practice, with a graph of this size, there's no way you can avoid typical problems like: 2 components depending on the same module but with different, incompatible, APIs multiple libraries providing the same feature (a single logger API, but you end up with multiple implementations) and more like: dealing with incompatible versions of a runtime (e.g: Scala 2.11 vs Scala 2.12) misaligned dependencies of a component (e.g: Jackson Databind 2.9.0 with Jackson Core 2.9.4) builds suddenly failing because of a dynamic version upgrade (version "1.+") rejecting vulnerable transitive dependencies removing unused dependencies inconsistent versions between subprojects in the same repository Dependency issues can cause many problems when building and testing your products and it can be extremely challenging to figure out, on a daily basis, what caused a regression, why the project suddenly doesn't build anymore or what dependency is responsible for an upgrade of another dependency. If you are lucky, you would get a compile time error, but it's common to only see problems occurring when executing tests or even at production runtime. In all these cases the error is often hard to trace back to the source, as it appears after the dependency resolution in the build tool has been successful. So from a dependency management perspective everything

## Immutable jackson pojo with Lombok

DevFeed: [Immutable jackson pojo with Lombok](<https://devfeed.tech/articles/immutable-jackson-pojo-with-lombok-26089.md>)

Original publisher: [Read original article](<https://blog.arkey.fr/tomb/immutable-jackson-pojo-with-lombok/>)

Author: brice.dutheil@gmail.com (Brice Dutheil)

Published: 2019-02-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [The Coffee Workshop](<https://devfeed.tech/sources/the-coffee-workshop.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Jackson, Java Dates, Exception, LocalDate](<https://devfeed.tech/topics/jackson-java-dates-exception-localdate.md>), [Code](<https://devfeed.tech/topics/code.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [generation](<https://devfeed.tech/tags/generation.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [java](<https://devfeed.tech/tags/java.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [project](<https://devfeed.tech/tags/project.md>), [reduce](<https://devfeed.tech/tags/reduce.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

This article discusses keeping Java objects immutable when using code-generation tools such as Lombok and serialization tooling such as Jackson. It focuses on reducing repetitive accessors and constructor code while considering maintenance costs.

### Source excerpt

The quest to immutable objects It's sometime hard to keep following good principles in object oriented paradigm especially if we'd like to enjoy modern tooling that those that generates code for us.

## Immutable dto in jackson

DevFeed: [Immutable dto in jackson](<https://devfeed.tech/articles/immutable-dto-in-jackson-27268.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201704/immutable-dto/>)

Published: 2017-04-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Jackson](<https://devfeed.tech/topics/jackson.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [json](<https://devfeed.tech/tags/json.md>)

### AI overview

This tutorial explains how Jackson 2.7 can deserialize immutable Java DTOs from JSON by using constructor-based object creation and @ConstructorProperties. It also describes using Lombok's @RequiredArgsConstructor to generate the required constructor metadata.

### Source excerpt

Immutability and functional programming are hot right now. But how to achieve immutability with objects deserialized from json? Luckily there is pretty old feature introduced in jackson 2.7.0 which uses constructor based object creation and uses @ConstructorProperties (introduced in java7). Read more