Java 将Orika自定义筛选器范围限制为类映射,而不是工厂

Java 将Orika自定义筛选器范围限制为类映射,而不是工厂,java,orika,Java,Orika,给定POJO的Foo和FooDTO,如果Foo.fieldCondition不为null(并且匹配各种条件),我只想映射Foo.field。目前,我通过使用一个自定义过滤器来实现这一点,在这里我执行下面所示的代码。但是,由于自定义筛选器是向MapperFactory注册的,因此它们会过滤所有字段,而不考虑顶级POJO类。例如,过滤器也将在Bar.barfield、Sample.sampleField等上运行。我可以通过将其注册到ClassMapBuilder来限制过滤器的范围吗 public c

给定POJO的Foo和FooDTO,如果Foo.fieldCondition不为null(并且匹配各种条件),我只想映射Foo.field。目前,我通过使用一个自定义过滤器来实现这一点,在这里我执行下面所示的代码。但是,由于自定义筛选器是向MapperFactory注册的,因此它们会过滤所有字段,而不考虑顶级POJO类。例如,过滤器也将在Bar.barfield、Sample.sampleField等上运行。我可以通过将其注册到ClassMapBuilder来限制过滤器的范围吗

public class FooCustomFilter extends NullFilter<Object,Object> {

@Override
public <S , D > boolean shouldMap(final Type<S> sourceType, final String sourceName,
                                                    final S source, final Type<D> destType,
                                                    final String destName,
                                                    final MappingContext mappingContext) {


    Class clazz = mappingContext.getResolvedSourceType().getRawType();

    if (Foo.class.isAssignableFrom(clazz)) {
    // validate object in context and return according to that
    return validate(...);
}
公共类FooCustomFilter扩展了NullFilter{
@凌驾
公共布尔值shouldMap(最终类型sourceType,最终字符串sourceName,
最终S源,最终类型destType,
最后一个字符串名,
最终映射上下文(映射上下文){
类clazz=mappingContext.getResolvedSourceType().getRawType();
if(Foo.class.isAssignableFrom(clazz)){
//在上下文中验证对象并根据该值返回
返回验证(…);
}

<代码>您是否考虑过<代码>自定义映射器< /代码>?