callfunc.js revision 970:f82b83cf73ae
1235426Sdelphij/* 2190225Srpaulo * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 3190225Srpaulo * 4190225Srpaulo * Redistribution and use in source and binary forms, with or without 5190225Srpaulo * modification, are permitted provided that the following conditions 6190225Srpaulo * are met: 7190225Srpaulo * 8190225Srpaulo * - Redistributions of source code must retain the above copyright 9190225Srpaulo * notice, this list of conditions and the following disclaimer. 10190225Srpaulo * 11190225Srpaulo * - Redistributions in binary form must reproduce the above copyright 12190225Srpaulo * notice, this list of conditions and the following disclaimer in the 13190225Srpaulo * documentation and/or other materials provided with the distribution. 14190225Srpaulo * 15190225Srpaulo * - Neither the name of Oracle nor the names of its 16190225Srpaulo * contributors may be used to endorse or promote products derived 17190225Srpaulo * from this software without specific prior written permission. 18190225Srpaulo * 19190225Srpaulo * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20190225Srpaulo * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21190225Srpaulo * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22190225Srpaulo * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23190225Srpaulo * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24190225Srpaulo * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25190225Srpaulo * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26190225Srpaulo * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27190225Srpaulo * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28190225Srpaulo * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29190225Srpaulo * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30190225Srpaulo */ 31190225Srpaulo 32190225Srpaulo// simple example showing how to call a global script 33190225Srpaulo// function from caller 34190225Srpaulo 35190225Srpaulovar ScriptEngineManager = Java.type("javax.script.ScriptEngineManager"); 36190225Srpaulo// create manager 37190225Srpaulovar manager = new ScriptEngineManager(); 38190225Srpaulo// create engine 39190225Srpaulovar engine = manager.getEngineByName("js"); 40190225Srpaulo 41190225Srpaulo// eval code! 42190225Srpauloengine.eval("function func(name) { print('I am func, hello ' + name) }"); 43190225Srpaulo 44190225Srpaulo// invoke functions, methods of code evaluated by engine 45190225Srpaulo// from javax.script.Invocable interface. But, hey, 46190225Srpaulo// calling code is JavaScript and don't worry about types :) 47190225Srpaulo 48251129Sdelphijengine.invokeFunction("func", "Nashorn"); 49190225Srpaulo