グルーヴィーな表現originalPayload
と同じことをしないことがわかりました。message.originalPayload
つまり、次のトランスフォーマーは同じことを行いません。
とoriginalPayload
:
<expression-transformer evaluator="groovy" expression="originalPayload" />
とmessage.originalPayload
:
<expression-transformer evaluator="groovy" expression="message.originalPayload" />
次のミュール構成とテスト ケースを使用して、問題を再現できます。
<mule ...>
<flow name="test">
<vm:inbound-endpoint name="test.Name" path="test.Path"
exchange-pattern="request-response" />
<expression-transformer evaluator="string" expression="bar" />
<expression-transformer evaluator="groovy" expression="originalPayload" />
<!-- or alternatively -->
<!-- <expression-transformer evaluator="groovy" expression="message.originalPayload" /> -->
</flow>
</mule>
テストケースは次のとおりです。
@Test
public void transformers() throws MuleException {
final MuleClient client = muleContext.getClient();
final MuleMessage reply = client.send("vm://test.Path", 1, null, RECEIVE_TIMEOUT);
assertEquals(1, reply.getPayload());
}
の代替案はmessage.originalPayload
期待どおりに機能します。originalPayload
ないものと次の例外がログに表示されます。
Exception stack is:
1. Expression Evaluator "groovy" with expression "originalPayload" returned null
but a value was required. (org.mule.api.expression.RequiredValue Exception)
私は何が間違っているのでしょうか?
ありがとう。