Ticket #4421: TestJS.java

File TestJS.java, 2.0 KB (added by bastiK, 12 years ago)

Java -> JSON

Line 
1import javax.swing.*;
2import java.awt.*;
3import java.util.*;
4import java.util.List;
5import java.util.zip.*;
6import java.io.*;
7import java.net.*;
8
9import javax.script.*;
10
11public class TestJS {
12 public static void main(String[] args) {
13
14
15 ScriptEngineManager mgr = new ScriptEngineManager();
16
17 ScriptEngine jsEngine = mgr.getEngineByName("rhino");
18
19 Map<String, String> map = new HashMap<String, String>();
20 map.put("key1", "value1");
21 map.put("key2", "value2");
22 Map<String, List<String>> lists = new HashMap<String, List<String>>();
23 lists.put("lkey1", Arrays.asList("first", "list"));
24 lists.put("lkey2", Arrays.asList("second", "list"));
25
26 jsEngine.put("map", map);
27 jsEngine.put("lists", lists);
28
29 String init =
30 "pref = {};"+
31 "for (it = map.entrySet().iterator(); it.hasNext();) {"+
32 " e = it.next();"+
33 " pref[String(e.getKey())] = String(e.getValue());"+
34 "}"+
35 "for (it = lists.entrySet().iterator(); it.hasNext();) {"+
36 " e = it.next();"+
37 " list = e.getValue();"+
38 " jsList = [];"+
39 " for (i = 0; i < list.size(); i++) {"+
40 " jsList.push(String(list.get(i)));"+
41 " }"+
42 " jsList.type = 'list';"+
43 " pref[String(e.getKey())] = jsList;"+
44 "}"+
45 "map = null; lists = null;";
46
47 String script =
48 "for (key in pref) {"+
49 " val = pref[key];"+
50 " type = typeof val == 'string' ? 'string' : val.type;"+
51 " println('key: '+key+' value-type: '+type+' value: '+val);"+
52 "}"+
53 "pref['key3'] = 'value3';";
54
55 try {
56 System.out.println("Running init...");
57 jsEngine.eval(init);
58 System.out.println("Running script...");
59 jsEngine.eval(script);
60 } catch (ScriptException ex) {
61 ex.printStackTrace();
62 }
63 }
64}