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