Передача переменных аргументов в функцию 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)
Другие вопросы по тегам