1

最近我们将所有的 ComponentClassTransformWorkers 更新为 ComponentClassTransformWorker2s 并遇到了一个错误。因此,要创建一个名为LukesComponentClassTransformWorker2的新 ComponentClassTransformWorker2 方法,我使用如下内容:

PlasticMethod plasticMethod = plasticClass.introduceMethod("defaultValidate");
MethodAdvice advice = new MethodAdvice(){
    @Override
    public void advise(MethodInvocation invocation) {
        invocation.proceed();
        environment.push(MenuContext.class, context);   
    }
};
plasticMethod.addAdvice(advice);

然后,当后来的工作人员(在我的情况下,Tapestry 内置的 ParameterWorker)使用 PlasticClass.getMethods() 查找它并且没有找到它时,因为 plasticClass.getMethods() 没有返回任何“引入”方法。

此更改甚至会破坏已弃用的 ComponentClassTransformationWorker 的实现,因为BridgeClassTransformation只是在底层使用了 PlasticClass.getMethods():

public List<TransformMethod> matchMethods(Predicate<TransformMethod> predicate)
{
    return F.flow(plasticClass.getMethods()).map(toTransformMethod).filter(predicate).toList();
}

这对我来说似乎是一个错误,因为它是一个重大变化,而且它似乎也适用于字段。在类上搜索方法/字段不应该包括任何引入的方法/字段吗?

4

0 回答 0