Я работаю над API на Java, который позволяет пользователям писать сценарии и получать доступ к определенному набору методов, которые передаются (в виде объекта API) механизмом сценариев Nashorn.
Я хочу в JavaScript вызвать функцию getDate(), которая вернет некоторую произвольную дату (как собственную дату JavaScript), предоставленную со стороны Java.
Я попытался просто поместить org.java.util.Date в объект API, но это не будет вести себя как дата JS. Цель состоит в том, чтобы сделать это максимально простым для конечных пользователей, имеющих опыт работы с JS.
Пример Java:
public class MyAPI {
public void log(String text){
System.out.println(text);
}
public Date getDate(){
// Return something that converts to a native-JS date
}
public static void main(){
// MyClassFilter implements Nashorn's ClassFilter
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine(new MyClassFilter());
((Invokable) engine).invokeFunction("entryPoint", new MyAPI());
}
Пример JavaScript
function entryPoint(myApi){
var date = myApi.getDate();
myApi.log(date.getMinutes());
}