Передача переменных аргументов в функцию Java из JavaScript с использованием GraalVM
Я пытаюсь вызвать функцию, доступную в Corda RPC, под названием startTrackedFlowDynamic
который принимает 2 аргумента: startTrackedFlowDynamic(logicType: Class<out FlowLogic<T>>, vararg args: Any?)
который упакован в банку
Вызов этой функции производится из контекста Javascript (для этого используется GraalVM), я хочу вызвать эту функцию и передать ей аргументы, полученные из объекта запроса (скажем, из API REST)
Пример: если запрос содержит массив [::InitiatorA, iouValue]
Я хотел бы вызвать startTrackedFlowDynamic, как: startTrackedFlowDynamic(::InitiatorA, iouValue)
если запрос содержит массив [::InitiatorB, abc, xyz]
Я хотел бы вызвать startTrackedFlowDynamic как: startTrackedFlowDynamic(::InitiatorB, abc, xyz)
если запрос содержит массив [::InitiatorC]
Я хотел бы вызвать startTrackedFlowDynamic как: startTrackedFlowDynamic(::InitiatorC)
TLDR: я хотел бы сделать его как универсальный API вместо переписывания для каждого отдельного вызова Flow. Я хочу иметь возможность передавать динамическое число аргументов, поступающих из объекта запроса, в эту функцию вместо жесткого кодирования фиксированного количества аргументов и необходимости его обновления при изменении количества аргументов
Пример поведения, которое я хочу воспроизвести:
var func = function () {
console.log(arguments.length);
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
};
func.apply(null, ['::InitiatorA', 'abc', 'xyz'])
Какие-либо предложения?
1 ответ
Кажется, работает со следующим синтаксисом JavaScript
var argsArray = ['::InitiatorA', 'abc', 'xyz']
startTrackedFlowDynamic(...argsArray)