Передача переменных аргументов в функцию Java из JavaScript с использованием GraalVM - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь вызвать функцию, доступную в Corda RPC, под названием startTrackedFlowDynamic, которая принимает 2 аргумента: startTrackedFlowDynamic(logicType: Class<out FlowLogic<T>>, vararg args: Any?), которая упакована в JAR

Вызов этой функциисделанный из контекста Javascript (для этого используется GraalVM), я хочу вызвать эту функцию и передать ей аргументы, полученные из объекта запроса (скажем, из API REST) ​​

Пример: если запрос содержит массив [::InitiatorA, iouValue], я хотел бы вызвать startTrackedFlowDynamic, например: startTrackedFlowDynamic(::InitiatorA, iouValue)

, если запрос содержит массив [::InitiatorB, abc, xyz]. Я бы хотел вызвать startTrackedFlowDynamic, например: startTrackedFlowDynamic(::InitiatorB, abc, xyz)

если запрос содержит массив [::InitiatorC] Я бы хотел вызвать startTrackedFlowDynamic, например: startTrackedFlowDynamic(::InitiatorC)

TLDR: я хотел бы сделать его как универсальный API вместо переписывания длякаждый отдельный поток вызовов.Я хочу иметь возможность передавать динамическое число аргументов, поступающих из объекта запроса, в эту функцию вместо жесткого кодирования фиксированного количества аргументов и необходимости его обновления при изменении числа аргументов

Пример поведения, которое я хочу повторить:

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 Ответ

0 голосов
/ 21 ноября 2018

Кажется, что работает со следующим синтаксисом JavaScript

var argsArray = ['::InitiatorA', 'abc', 'xyz']
startTrackedFlowDynamic(...argsArray)
...