mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-13 22:16:11 +00:00
@Jacksonized: add documentation, changelog
This commit is contained in:
1 parent
a749bc230f
commit
3a2a61f807
3 files changed
+59
-1
No files matched your search
@@ -1,13 +1,14 @@
|
||||
Lombok Changelog
|
||||
----------------
|
||||
|
||||
### v.18.13 "Edgy Guinea Pig"
|
||||
### v1.18.13 "Edgy Guinea Pig"
|
||||
* BREAKING CHANGE: mapstruct users should not add a dependency to lombok-mapstruct-binding. This solves compiling modules with lombok (and mapstruct).
|
||||
* FEATURE: Similar to `@Builder`, you can now configure a `@SuperBuilder`'s 'setter' prefixes via `@SuperBuilder(setterPrefix = "set")` for example. We still discourage doing this. [Pull Request #2357](https://github.com/rzwitserloot/lombok/pull/2357).
|
||||
* FEATURE: If using `@Synchronized("lockVar")`, if `lockVar` is referring to a static field, the code lombok generates no longer causes a warning about accessing a static entity incorrectly. [Issue #678](https://github.com/rzwitserloot/lombok/issues/678)
|
||||
* BUGFIX: Using `@SuperBuilder` on a class that has some fairly convoluted generics usage would fail with 'Wrong number of type arguments'. [Issue #2359](https://github.com/rzwitserloot/lombok/issues/2359) [Pull Request #2362](https://github.com/rzwitserloot/lombok/pull/2362)
|
||||
* BUGFIX: Various lombok annotations on classes nested inside enums or interfaces would cause errors in eclipse. [Issue #2369](https://github.com/rzwitserloot/lombok/issues/2369)
|
||||
* BUGFIX: Trying to add `@ExtensionMethod`s with exactly 2 arguments would fail in eclipse. [Issue #1441](https://github.com/rzwitserloot/lombok/issues/1441) [Pull Request #2376](https://github.com/rzwitserloot/lombok/pull/2376) thanks to __@Rawi01__.
|
||||
* FEATURE: `@Jacksonized` on a `@Builder` or `@SuperBuilder` will configure [Jackson](https://github.com/FasterXML/jackson) to use this builder when deserializing. [Pull Request #2387](https://github.com/rzwitserloot/lombok/pull/2387). [@Jacksonized documentation](https://projectlombok.org/features/experimental/Jacksonized).
|
||||
|
||||
### v1.18.12 (February 1st, 2020)
|
||||
* PLATFORM: Support for JDK13 (including `yield` in switch expressions, as well as delombok having a nicer style for arrow-style switch blocks, and text blocks).
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
<#import "../_features.html" as f>
|
||||
|
||||
<@f.scaffold title="@Jacksonized" logline="Make Jackson use your builders.">
|
||||
<@f.history>
|
||||
<p>
|
||||
<code>@Jacksonized</code> was introduced as experimental feature in lombok v1.18.14.
|
||||
</p>
|
||||
</@f.history>
|
||||
|
||||
<@f.overview>
|
||||
<p>
|
||||
The <code>@Jacksonized</code> annotation is an add-on annotation for <a href="/features/Builder"><code>@Builder</code></a> and <a href="/features/experimental/SuperBuilder"><code>@SuperBuilder</code></a>.
|
||||
It automatically configures the generated builder class to be used by <a href="https://github.com/FasterXML/jackson">Jackson</a>'s deserialization.
|
||||
It only has an effect if present at a context where there is also a <code>@Builder</code> or a <code>@SuperBuilder</code>; a warning is emitted otherwise.
|
||||
</p><p>
|
||||
Without <code>@Jacksonized</code>, you would have to customize your builder class(es).
|
||||
With <code>@Jacksonized</code>, you can simply write something like this to let Jackson use the generated builder:<div class="snippet"><div class="java" align="left"><pre>
|
||||
@Jacksonized @Builder
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class JacksonExample {
|
||||
private List<Foo> foos;
|
||||
}
|
||||
</pre></div></div>
|
||||
</p><p>
|
||||
This annotation is especially useful when deserializing into immutable (sub-)classes that only use <code>@SuperBuilder</code> to create instances.
|
||||
With <code>@Jacksonized</code>, you do not have to put the complex <code>@SuperBuilder</code> class header into your code just to configure it for Jackson.
|
||||
</p><p>
|
||||
This annotation does <i>not</i> change the behavior of the generated builder.
|
||||
A <code>@Jacksonized</code> <code>@SuperBuilder</code> remains fully compatible to regular <code>@SuperBuilder</code>s.
|
||||
</p>
|
||||
</@f.overview>
|
||||
|
||||
<@f.smallPrint>
|
||||
<p>
|
||||
In particular, the annotation does the following:
|
||||
<ul>
|
||||
<li>
|
||||
Configure Jackson to use the builder for deserialization using <code>@JsonDeserialize(builder=<em>Foobar</em>.<em>Foobar</em>Builder[Impl].class))</code> on the class (where <em>Foobar</em> is the name of the annotated class).
|
||||
(An error is emitted if such an annotation already exists.)
|
||||
</li><li>
|
||||
Copy Jackson-related configuration annotations (like <code>@JsonIgnoreProperties</code>) from the class to the builder class.
|
||||
This is necessary so that Jackson recognizes them when using the builder.
|
||||
</li><li>
|
||||
Insert <code>@JsonPOJOBuilder(withPrefix="")</code> on the generated builder class to override Jackson's default prefix "with".
|
||||
If you configured a different prefix in lombok using <code>setterPrefix</code>, this value is used.
|
||||
If you changed the name of the <code>build()</code> method using using <code>buildMethodName</code>, this is also made known to Jackson.
|
||||
</li><li>
|
||||
For <code>@SuperBuilder</code>, make the builder implementation class package-private.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
</@f.smallPrint>
|
||||
</@f.scaffold>
|
||||
@@ -71,6 +71,10 @@
|
||||
<@main.feature title="@Tolerate" href="Tolerate">
|
||||
Skip, jump, and forget! Make lombok disregard an existing method or constructor.
|
||||
</@main.feature>
|
||||
|
||||
<@main.feature title="@Jacksonized" href="Jacksonized">
|
||||
Make Jackson use your builders.
|
||||
</@main.feature>
|
||||
</div>
|
||||
|
||||
<@f.confKeys>
|
||||
|
||||
Reference in new issue
Block a user