我正在使用Avro maven插件来处理一些Avro文件并生成Java类。我的目标是告诉插件,当字段接受空值时,通过声明类型为null,就生成 Optional getters。比如说
{
"namespace": "br.com.gruposaga.core.event",
"type": "record",
"name": "UserEvent",
"fields": [
{
"name": "id",
"type": "int"
},
{
"name": "name",
"type": "string"
},
{
"name": "email",
"type": [
"null",
"string"
],
"default": null
}
]
}
所以,在上面提到的定义中,插件应该为id和name生成默认的getter。但是对于e-mail这个可以为空的字段,我希望插件只生成Optional getter。我尝试了插件中的gettersReturnOptional和createOptionalGetters两种配置,但都没有实现。那么,如何才能做到这一点呢?
我通过定制record.vm velocity模板来实现这一行为。替换
#if (${this.gettersReturnOptional})
与
#if ($field.schema().isNullable())
做到了这一点。