/*
* Copyright (C) 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met: Redistributions of source code
* must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution. Neither the name of the Sun Microsystems nor the names of
* is contributors may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package seco.langs.javascript.jsr;
import seco.langs.javascript.jsr.util.*;
import javax.script.*;
import java.io.*;
import java.util.*;
/**
* Embedded javascript interpreter.
*/
public class EmbeddedRhinoScriptEngine extends RhinoScriptEngine {
protected DeTagifier detagifier;
public EmbeddedRhinoScriptEngine() {
detagifier = new DeTagifier("context.getWriter().write(\"",
"\");\n",
"context.getWriter().write(",
");\n");
}
public EmbeddedRhinoScriptEngine(ScriptEngineFactory fac)
{
super(fac);
detagifier = new DeTagifier("context.getWriter().write(\"",
"\");\n",
"context.getWriter().write(",
");\n");
}
protected Reader preProcessScriptSource(Reader reader) throws ScriptException {
try {
String s = detagifier.parse(reader);
return new StringReader(s);
}
catch (IOException ee) {
throw new ScriptException(ee);
}
}
public static void main(String[] args) throws Exception {
if (args.length == 0) {
System.out.println("No file specified");
return;
}
InputStreamReader r = new InputStreamReader(new FileInputStream(args[0]));
ScriptEngine engine = new EmbeddedRhinoScriptEngine();
SimpleScriptContext context = new SimpleScriptContext();
engine.put(ScriptEngine.FILENAME, args[0]);
engine.eval(r, context);
context.getWriter().flush();
}
}
|