History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/com/sun/script/javascript/RhinoScriptEngineFactory.java (1 of 18352 files). Show all

Unified · Split

java/pkg/com/sun/script/javascript/RhinoScriptEngineFactory.java+163−0
@@ -0,0 +1,163 @@
1/*
2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package com.sun.script.javascript;
27import javax.script.*;
28import java.util.*;
29import sun.org.mozilla.javascript.internal.*;
30import com.sun.script.util.*;
31
32/**
33 * Factory to create RhinoScriptEngine
34 *
35 * @author Mike Grogan
36 * @since 1.6
37 */
38public class RhinoScriptEngineFactory extends ScriptEngineFactoryBase {
39
40 public RhinoScriptEngineFactory() {
41 }
42
43 public List<String> getExtensions() {
44 return extensions;
45 }
46
47 public List<String> getMimeTypes() {
48 return mimeTypes;
49 }
50
51 public List<String> getNames() {
52 return names;
53 }
54
55 public Object getParameter(String key) {
56 if (key.equals(ScriptEngine.NAME)) {
57 return "javascript";
58 } else if (key.equals(ScriptEngine.ENGINE)) {
59 return "Mozilla Rhino";
60 } else if (key.equals(ScriptEngine.ENGINE_VERSION)) {
61 return "1.7 release 3 PRERELEASE";
62 } else if (key.equals(ScriptEngine.LANGUAGE)) {
63 return "ECMAScript";
64 } else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) {
65 return "1.8";
66 } else if (key.equals("THREADING")) {
67 return "MULTITHREADED";
68 } else {
69 throw new IllegalArgumentException("Invalid key");
70 }
71 }
72
73 public ScriptEngine getScriptEngine() {
74 RhinoScriptEngine ret = new RhinoScriptEngine();
75 ret.setEngineFactory(this);
76 return ret;
77 }
78
79 public String getMethodCallSyntax(String obj, String method, String... args) {
80
81 String ret = obj + "." + method + "(";
82 int len = args.length;
83 if (len == 0) {
84 ret += ")";
85 return ret;
86 }
87
88 for (int i = 0; i < len; i++) {
89 ret += args[i];
90 if (i != len - 1) {
91 ret += ",";
92 } else {
93 ret += ")";
94 }
95 }
96 return ret;
97 }
98
99 public String getOutputStatement(String toDisplay) {
100 StringBuffer buf = new StringBuffer();
101 int len = toDisplay.length();
102 buf.append("print(\"");
103 for (int i = 0; i < len; i++) {
104 char ch = toDisplay.charAt(i);
105 switch (ch) {
106 case '"':
107 buf.append("\\\"");
108 break;
109 case '\\':
110 buf.append("\\\\");
111 break;
112 default:
113 buf.append(ch);
114 break;
115 }
116 }
117 buf.append("\")");
118 return buf.toString();
119 }
120
121 public String getProgram(String... statements) {
122 int len = statements.length;
123 String ret = "";
124 for (int i = 0; i < len; i++) {
125 ret += statements[i] + ";";
126 }
127
128 return ret;
129 }
130
131 /*
132 public static void main(String[] args) {
133 RhinoScriptEngineFactory fact = new RhinoScriptEngineFactory();
134 System.out.println(fact.getParameter(ScriptEngine.ENGINE_VERSION));
135 }
136 */
137
138 private static List<String> names;
139 private static List<String> mimeTypes;
140 private static List<String> extensions;
141
142 static {
143 names = new ArrayList<String>(6);
144 names.add("js");
145 names.add("rhino");
146 names.add("JavaScript");
147 names.add("javascript");
148 names.add("ECMAScript");
149 names.add("ecmascript");
150 names = Collections.unmodifiableList(names);
151
152 mimeTypes = new ArrayList<String>(4);
153 mimeTypes.add("application/javascript");
154 mimeTypes.add("application/ecmascript");
155 mimeTypes.add("text/javascript");
156 mimeTypes.add("text/ecmascript");
157 mimeTypes = Collections.unmodifiableList(mimeTypes);
158
159 extensions = new ArrayList<String>(1);
160 extensions.add("js");
161 extensions = Collections.unmodifiableList(extensions);
162 }
163}