Java 如何创建AVRO逻辑类型以使用正则表达式验证数据

Java 如何创建AVRO逻辑类型以使用正则表达式验证数据,java,json,regex,serialization,avro,Java,Json,Regex,Serialization,Avro,我是AVRO新手,尝试创建一个自定义逻辑类型,它可以使用正则表达式验证AVRO数据,就像这个问题中的用例一样: var type=avro.parse({ 名称:“示例”, 键入:“记录”, 字段:[ { 名称:'custId', 键入:“string”//普通(自由格式)字符串。 }, { 名称:'sessionId', 类型:{ 键入:“字符串”, logicalType:“已验证字符串”, 模式:'^\\d{3}-\\d{4}-\\d{5}$'//验证模式。 } }, ] },{logic

我是AVRO新手,尝试创建一个自定义逻辑类型,它可以使用正则表达式验证AVRO数据,就像这个问题中的用例一样:

var type=avro.parse({
名称:“示例”,
键入:“记录”,
字段:[
{
名称:'custId',
键入:“string”//普通(自由格式)字符串。
},
{
名称:'sessionId',
类型:{
键入:“字符串”,
logicalType:“已验证字符串”,
模式:'^\\d{3}-\\d{4}-\\d{5}$'//验证模式。
}
},
]
},{logicalTypes:{'validated-string':ValidatedString}});
type.isValid({custId:'abc',sessionId:'123-1234-12345'});//真的
type.isValid({custId:'abc',sessionId:'foobar'});//假的
但是这个例子是用JS编写的。然而,如何使用Java实现它,我读完了这个问题:

目前,我扩展了自定义逻辑类型类,如下所示:

演示答案中的以下JS代码可以从模式接收RegExp模式

函数ValidatedString(属性、选项){
avro.types.LogicalType.call(this、attrs、opts);
这个.u模式=新的RegExp(attrs.pattern);
}
我的问题是如何像JS代码一样扩展Conversion/LogicalType类?据我所知,我创建了转换和逻辑类型类,但是如何使用模式AVRO文件中的RegExp模式来验证新数据呢

import org.apache.avro.LogicalType;
公共类RegExplologicType扩展了LogicalType{
//用作类型引用的键
公共静态最终字符串REGEXP\u LOGICAL\u TYPE\u NAME=“REGEXP”;
公共字符串regexp_模式;
regexplological类型(){
超级(REGEXP\u逻辑类型\u名称);
}
私有regexplologicalType(字符串regexp_模式){
超级(REGEXP\u逻辑类型\u名称);
this.regexp\u pattern=regexp\u pattern;
}
}
公共类RegExpConversion扩展了转换{
private static final RegExpConversion实例=new RegExpConversion();
公共静态最终RegExpConversion get(){return INSTANCE;}
私有RegExpConversion(){super();}
...
@凌驾
public ByteBuffer fromBytes(ByteBuffer值、架构、逻辑类型){
/*如何从预定义的模式中获取RegExp模式*/
字符串regexp_模式=?????;
/*因此,我可以在下面的代码中使用该模式来验证值*/
if(Pattern.matches(regexp_Pattern,新字符串(value.array(),StandardCharsets.UTF_8))){
返回值;
}
抛出新的IllegalArgumentException(“无效模式:+value+”(必须是…);
}
}
先谢谢你