Call java methods from javascript (js) file pass Employee object in java 8 and print all its fields




Program/ Example of Nashorn Javascript (js) Engine in Java 8 - call java methods from javascript (js) file - call java method from javascript to pass Employee object in java and print all its fields - Use ScriptObjectMirror >  

package nashorn10_CallJavaMethodsFromJs3;
import java.util.Arrays;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
/**
* How to call java methods from javascript (js) file
* Use jdk.nashorn.api.scripting.ScriptObjectMirror class to store javascripts's Employee in java
*
*/
public class CallJavaMethodsFromJs {
   public static void main(String[] args) throws Exception {
     
      System.out.println("In java - START");
      
       ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
       engine.eval("load('E:/pocJmse/myNashornJavaScript.js')");
      
       System.out.println("In java - FINISH");
   }


   /**
    * This method will be called from Javascript (js) -
    * Method will print javascript's Employee Object Details In java
    * Use jdk.nashorn.api.scripting.ScriptObjectMirror class to store employee in java
    *
    */
   public static void printEmployeeObjectDetailsMethodInjava(ScriptObjectMirror employee) {
     
      System.out.println("In java - In printEmployeeObjectDetailsMethodInjava ");
     
      //Get all the keys in employee object
      String stringArray[] = employee.getOwnKeys(true);
      //Display stringArray[]
      System.out.print("In java - Display all keys in employee object > ");
      System.out.println(Arrays.toString(stringArray));
      System.out.println("\n"+"In java - Display all values corresponding to keys in employee using getMember() method > ");
      System.out.println("name = "+ employee.getMember("name")); //Or
                                                      // employee.getMember(stringArray[0])
      System.out.println("city = "+ employee.getMember("city")); //Or
                                                      // employee.getMember(stringArray[1])  
      System.out.println("\n"+"In java - Display all values corresponding to keys in employee using callMember() method > ");
       System.out.println("name = "+ employee.callMember("getName"));
       System.out.println("city = "+ employee.callMember("getCity"));
   }
}
/*OUTPUT
In java - START
In myNashornJavaScript.js
In js - Create employee
In js - Pass employeeObject in java
In java - In printEmployeeObjectDetailsMethodInjava
In java - Display all keys in employee object > [name, city, getName, getCity]
In java - Display all values corresponding to keys in employee using getMember() method >
name = Sam
city = Paris
In java - Display all values corresponding to keys in employee using callMember() method >
name = Sam
city = Paris
End myNashornJavaScript.js
In java - FINISH
*/


E:/pocJmse/myNashornJavaScript.js looks like this >
print('In myNashornJavaScript.js');
var CallJavaMethodsFromJs =Java.type('nashorn10_CallJavaMethodsFromJs3.CallJavaMethodsFromJs');
print('In js - Create employee');
var employeeObject = new Employee("Sam", "Paris");
function Employee(name, city) {
   this.name = name;
   this.city = city;
   this.getName = function() {
       return this.name;
   }
   this.getCity = function() {
       return this.city;
   }
}
print('In js - Pass employeeObject in java');
CallJavaMethodsFromJs.printEmployeeObjectDetailsMethodInjava(employeeObject);
 
print('End myNashornJavaScript.js');



Having any doubt? or you you liked the tutorial! Please comment in below section.
Please express your love by liking JavaMadeSoEasy.com (JMSE) on facebook, following on google+ or Twitter.

eEdit
Must read for you :