使用空负载将Mule 3.6迁移到Mule 3.7 NullPointerException调用方法

使用空负载将Mule 3.6迁移到Mule 3.7 NullPointerException调用方法,mule,mule-el,Mule,Mule El,我正在将我的mule项目从3.6版迁移到3.7版。在版本3.6中,我能够使用调用程序调用将有效负载作为参数传递的方法 现在在3.7版中,如果我这样做,当有效负载为null时,在类InvokerMessageProcessor的第272行执行以下测试时,我会得到NullPointerException: if (!(type.isAssignableFrom(arg.getClass()))) 因为当有效负载为nullarg时,它是null 这是一个错误吗?事实上,Mule处理空值和null值

我正在将我的mule项目从3.6版迁移到3.7版。在版本3.6中,我能够使用调用程序调用将有效负载作为参数传递的方法

现在在3.7版中,如果我这样做,当有效负载为
null
时,在类
InvokerMessageProcessor
的第272行执行以下测试时,我会得到
NullPointerException

if (!(type.isAssignableFrom(arg.getClass()))) 
因为当有效负载为
null
arg
时,它是
null


这是一个错误吗?

事实上,Mule处理空值和
null
值的方式从Mule 3.6+更改为3.7+,这是过去在Mule 3.6.x中对不同类型处理器和组件进行验证的方式:

  • MEL(Mule表达式语言):
    Payload==null
    :false

  • MEL:
    有效负载为空有效负载
    :真

  • MEL:
    有效负载是org.mule.transport.NullPayload
    :true

  • Groovy:
    org.mule.transport.NullPayload的有效负载实例
    :true

  • Groovy:
    Payload==null
    :false

    现在,在Mule 3.7.x中:

  • MEL:
    Payload==null
    :真

  • MEL:
    有效负载为空有效负载
    :false

  • MEL:
    有效载荷为org.mule.transport.NullPayload
    :false

  • Groovy:
    org.mule.transport.NullPayload的有效负载实例
    :true

  • Groovy:
    Payload==null
    :false


我知道发生了更改,但我想知道的是,如果MuleSoft因为类InvokerMessageProcessorNop中发生的NullPointerException而不得不更正代码,那是不会发生的,我向您提供的答案是直接从Mulesoft支持部门获得的,因为我以前也遇到过同样的情况,对他们来说,这是功能上的改进。