| JavaDoq: Global.java |
01
02 /*
03 * Descripter 1.0 - Java Script Engines
04 * Copyright (C) 2010-2015 Jianjun Liu (J.J.Liu)
05 *
06 * This program is free software: you can redistribute it and/or modify
07 * it under the terms of the GNU Affero General Public License as published by
08 * the Free Software Foundation, either version 3 of the License, or
09 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package org.descripter.js.api;
21
22 /**
23 * <p>Emulates the global contexts of JavaScript.</p>
24 *
25 * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.descripter.org" target="_blank">http://www.descripter.org</a>
26 * @since Descripter 1.0
27 */
28 public abstract class Global<W extends Core> extends Script<W>
29 {
30 /**
31 * <p>Constructs a global script context of this type.</p>
32 * @param with The containing {@link Core} context.
33 * @since Descripter 1.0
34 */
35 protected Global(W with) {
36 super(with);
37 if (with != null) {
38 put(with._this, this);
39 }
40 }
41
42 /**
43 * <p>Returns a string representation of the current object.</p>
44 * @return The string representation of the current object
45 * @since Descripter 1.0
46 */
47 @Override
48 public String toString() {
49 return "[Global object]";
50 }
51
52 /**
53 * <p>Gets the engine core of this global script context.</p>
54 * @return The engine core of this global script context
55 * @since Descripter 1.0
56 */
57 @Override
58 public W core() {
59 return with;
60 }
61
62 /**
63 * <p>Creates a global service with the specified {@link java.lang.reflect.Method} of this global script context.</p>
64 * @param method The name of a {@link java.lang.reflect.Method} of this global script context
65 * @since Descripter 1.0
66 */
67 protected final Key globalize(String method) {
68 try {
69 Key k = key(method);
70 put(k, getClass().getMethod(
71 method,
72 new Class<?>[]{Script.class, Object[].class}
73 ));
74 return k;
75 } catch (SecurityException e) {
76 throw new RuntimeException(e);
77 } catch (NoSuchMethodException e) {
78 throw new RuntimeException(e);
79 }
80 }
81 }
| JavaDoq: Global.java |