私は、次のMEL機能を持っている:アップグレード後MEL機能の予期しない動作3.8.1
%var mySomething = createSomething("foo")
これが正常に動作している:DWLファイルから呼び出されている
def createSomething(foo){
if (org.springframework.util.StringUtils.isEmpty(foo)){
return org.apache.commons.lang.StringUtils.remove(java.util.UUID.randomUUID().toString(), '-');
}
if (foo.toString().length() <= 32){
return foo;
}
String fooWithoutHyphens = org.apache.commons.lang.StringUtils.remove(foo.toString(), '-');
if (fooWithoutHyphens.length() <= 32){
return fooWithoutHyphens;
}
return foo.toString().substring(0, 32);
}
Muleランタイムで3.7.2。
しかしミュールランタイム3.8.1にアップグレードした後、私は次の例外受け取る:私は関数の第二引数として何を提供する場合、例えば、
com.mulesoft.weave.mule.exception.WeaveExecutionException: Exception while executing:
Unknown
Not enough arguments (1) for function with parameters (foo,
fooWithoutHyphens)..
at com.mulesoft.weave.mule.exception.WeaveExecutionException$.apply(WeaveExecutionException.scala:12)
at com.mulesoft.weave.mule.WeaveMessageProcessor.execute(WeaveMessageProcessor.scala:121)
at com.mulesoft.weave.mule.WeaveMessageProcessor.process(WeaveMessageProcessor.scala:67)
at com.mulesoft.weave.mule.WeaveMessageProcessor$$FastClassByCGLIB$$216b1542.invoke(<generated>)
を
%var mySomething = createSomething("foo", 0)
例外は発生しませんが、機能が期待通りに機能しないことがわかります。
この動作の理由とその修正方法を教えてください。
UPDATE:以下の一部の場合:
String fooWithoutHyphens = org.apache.commons.lang.StringUtils.remove(foo.toString(), '-');
if (fooWithoutHyphens.length() <= 32){
return fooWithoutHyphens;
}
を削除するかに置き換えられます。
if (org.apache.commons.lang.StringUtils.remove(foo.toString(), '-').length() <= 32){
return org.apache.commons.lang.StringUtils.remove(foo.toString(), '-');
}
例外がスローされません。宣言された文字列fooWithoutHyphensが引数として扱われるようになったようですが、その理由はわかりません。
奇妙なことに、例外として、あなたの関数を 'createSomething(foo、fooWithoutHyphens)'として定義しましたが、別の定義が他の場所に存在しないと確信していますか? –
@Pierre B.当初は同じことをしましたが、私は他の出来事を見つけることができませんでした。私は再び確認します。 –
@Pierre B.これはこの機能です。私の質問の更新部分を見てください。 –