package com.example.nashorn.npe;
import javax.script.ScriptEngineManager;
import javax.swing.JMenuItem;

public class JdkScriptingNashornNPE {
	private static final String SCRIPT = "var CustomMenu = Java.type('com.example.nashorn.npe.JdkScriptingNashornNPE$CustomMenu');" 
			+ "new CustomMenu('') { custom: function() { print('Executed.') } }.custom()"; 

	public static void main(String[] args) throws Exception { 
		new ScriptEngineManager().getEngineByName("ECMAScript").eval(SCRIPT); 
	} 

	public abstract static class CustomMenu extends JMenuItem { 

		private static final long serialVersionUID = 1L; 

		public CustomMenu(String label) { 
			super(label); 
		} 

		public abstract void custom(); 
	} 
}
