If I have ParameterNamesModule and this data class:
public class Data {
private final String foo;
private final Integer bar;
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
static Data fromBuilder(Builder builder) {
return new Data(builder.foo, builder.bar);
}
private Data(String foo, Integer bar) {
this.foo = foo;
this.bar = bar;
}
public String getFoo() {
return foo;
}
public Integer getBar() {
return bar;
}
public static class Builder {
private String foo;
private Integer bar;
@JsonProperty("foo")
public Builder foo(String foo) {
this.foo = foo;
return this;
}
@JsonProperty("bar")
public Builder bar(Integer bar) {
this.bar = bar;
return this;
}
public Data build() {
return Data.fromBuilder(this);
}
}
}
Then running objectMapper.getSerializationConfig().introspect(/* Data type */); will return a BeanDescription that includes builder as a property.
This happens because with ParameterNamesModule we are able to infer the name of the JsonCreator parameter here and when we are, we include this parameter in the properties.
I think here we should be checking if the creator factory is a delegating kind that takes a complex value as an input. If maintainers of this repo agree, I will file a PR with the fix.
If I have
ParameterNamesModuleand this data class:Then running
objectMapper.getSerializationConfig().introspect(/* Data type */);will return aBeanDescriptionthat includesbuilderas a property.This happens because with
ParameterNamesModulewe are able to infer the name of theJsonCreatorparameter here and when we are, we include this parameter in the properties.I think here we should be checking if the creator factory is a delegating kind that takes a complex value as an input. If maintainers of this repo agree, I will file a PR with the fix.