script

Invoke specific script function

This is an example of how to invoke a specific script function. We are using the ScriptEngine interface that provides methods for the basic scripting functionality. Invoking a script function with Java implies that you should:

  • Create a new ScriptEngineManager. The ScriptEngineManager implements a discovery and instantiation mechanism for ScriptEngine classes and also maintains a collection of key/value pairs storing state shared by all engines created by the Manager.
  • Use the getEngineByExtension(String extension) API method to look up and create a ScriptEngine for the js extension.
  • Create a String script that describes a function. In this example, we have created sayHi(name) function that prints a message and the name parameter ans another function, sayHi(), that invokes sayHi(name) function with a null parameter.
  • Use the eval(String script) method to execute the script.
  • Cast the engine to an Invocable engine, that is an interface implemented by ScriptEngines whose methods allow the invocation of procedures in scripts that have previously been executed
  • Use invokeFunction(String name, Object... args) method to call the functions defined in the script.

Let’s take a look at the code snippet that follows:  

package com.javacodegeeks.snippets.core;
 
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import javax.script.Invocable;
 
public class InvokingFunctionExample {
    public static void main(String[] args) {

  String script =
"function sayHi() {" +
"   sayHi(null);" +
"}" +
" " +
"function sayHi(name) {" +
"   println('Hi' + " +
"
 ((name == null) ? ' JavaCodeGeeks Felow!' : ' ' + name + '!'));" +

"}";
 
  ScriptEngineManager manager = new ScriptEngineManager();

  ScriptEngine engine = manager.getEngineByExtension("js");
 
  try {
engine.eval(script);
 
//cast the engine to Invocable engine.

Invocable invocableEngine = (Invocable) engine;
 
// Invoke sayHi function without parameter.

invocableEngine.invokeFunction("sayHi");
 
// Invoke sayHi function with parameter.

invocableEngine.invokeFunction("sayHi", "username");

  } catch (ScriptException e) {

e.printStackTrace();

  } catch (NoSuchMethodException e) {

e.printStackTrace();

  }
    }
}

Output:

Hi JavaCodeGeeks Felow!
Hi username!

  
This was an example of how to invoke a specific script function in Java.

Ilias Tsagklis

Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button