[
https://issues.apache.org/jira/browse/JOHNZON-213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16864680#comment-16864680
]
Jin Kwon commented on JOHNZON-213:
----------------------------------
[~romain.manni-bucau] Thank you.
I concluded that Apache Johnzon requires both getter and setter to be annotated
with {{@JsonbTypeAdpater}}.
{code:java}
public class Child extends Parent<SomeOptions> {
@JsonbTypeAdapter(SomeOptionsAdapter.class)
@Override
public SomeOptions getOptions() {
return super.getOptions();
}
// @JsonbTypeAdapter(SomeOptionsAdapter.class)
@Override
public void setOptions(SomeOptions options) {
super.setOptions(options);
}
}
{code}
And I really want anyone to rethink about the meaning of accessing {{property}}.
When a field is supposed to be accessed via a term of {{property}} that means
there will be standard accessors(getter and setter).
But that doesn't mean both accessors need to be annotated with same annotation.
Apache Johnzon must detect {{@JsonbTypeAdapter}} only from either from getter
or from setter.
How about following example?
{code:java}
@JsonbProperty
public String getExposed() {
return hidden;
}
//@JsonProperty // required? Johnzon works without it.
public void setExposed(final String exposed) {
this.hidden = exposed;
}
@JsonbTransient
private String hidden = "hidden";
{code}
Should {{setExposed}} be annotated with {{@JsonbProperty}}?
> Make @JsonbTypeAdapter works with accessors
> -------------------------------------------
>
> Key: JOHNZON-213
> URL: https://issues.apache.org/jira/browse/JOHNZON-213
> Project: Johnzon
> Issue Type: Bug
> Components: JSON-B
> Affects Versions: 1.1.12
> Reporter: Jin Kwon
> Priority: Major
>
> For some reasons, I need to annotate an overridden method with an
> {{@JsonbTypeAdapter}}.
> {code:java}
> class Parent<T extends ...> {
> T options;
> }
> class Child extends Parent<SomeOptions> {
> @JsonbTypeAdapter(value = SomeOptionsTypeAdapter.class)
> public SomeOptions getOptions() {
> return super.getOptions();
> }
> }
> {code}
> Now Johnzon complains.
> {code}
> javax.json.bind.JsonbException: Missing a Converter for type class
> ...Params$Options to convert the JSON String '{"..."}' . Please register a
> custom converter for it.
> Caused by: org.apache.johnzon.mapper.MapperException: Missing a Converter for
> type class ...Params$Options to convert the JSON String '{"..."}' . Please
> register a custom converter for it.
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)