⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 script.java

📁 openacs source for CPE wan management
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package org.openacs.js;import java.lang.reflect.Method;import java.util.logging.Level;import java.util.logging.Logger;import javax.ejb.FinderException;import org.mozilla.javascript.Context;import org.mozilla.javascript.Function;import org.mozilla.javascript.FunctionObject;import org.mozilla.javascript.Scriptable;import org.mozilla.javascript.ScriptableObject;import org.openacs.HostsLocal;import org.openacs.ScriptLocal;import org.openacs.message.Inform;import org.openacs.message.TransferComplete;import org.openacs.utils.Ejb;/** * * @author Administrator */public class Script extends Thread {    private Inform lastInform;    private String script;    private HostsLocal host;    private TransferComplete transferComplete;        public Script (Inform lastInform, String script, HostsLocal host, TransferComplete transferComplete) {        this.lastInform = lastInform;        this.script = script;        this.host = host;        this.transferComplete = transferComplete;    }        private static Level getLevel (String l) {        if (l.compareToIgnoreCase("severe")==0) return Level.SEVERE;        if (l.compareToIgnoreCase("warning")==0) return Level.WARNING;        //if (l.compareToIgnoreCase("info")==0) return Level.INFO;        return Level.INFO;    }    public static Object logger (Context cx, Scriptable thisObj, Object[] args, Function funObj)  {        //System.out.println("logger with "+args.length+" parameters");        String msg = "";        Level level;        switch (args.length) {            case 0:                level = Level.WARNING;                msg = "logger called with no severity and message";                break;            case 1:                level = Level.INFO;                msg = args[0].toString();                break;            case 2:                level = getLevel((String)args[0]);                msg = args[1].toString();                break;            default:                level = getLevel((String)args[0]);                for (Object m : args) {                    msg += m.toString();                }                msg = args[0].toString();                break;        }        Logger.getLogger(Script.class.getName()).log (level, msg);        return null;    }    public static Object call (Context cx, Scriptable thisObj, Object[] args, Function funObj)  {        if (args.length < 1) {            Logger.getLogger(Script.class.getName()).log (Level.WARNING, "call function with zero args");            return null;        }       ScriptLocal script;        try {            script = Ejb.lookupScriptBean((String) args[0]);            /*             Object [] newargs = null;            if (args.length > 1) {                newargs = new Object[args.length - 1];                System.arraycopy(args, 1, newargs, 0, args.length - 1);                Scriptable a = cx.newArray(thisObj, newargs);                thisObj.put("arguments", thisObj, newargs);            }             */             return cx.evaluateString(thisObj, new String (script.getScript()), (String)args[0], 1, null);        } catch (FinderException ex) {            Logger.getLogger(Script.class.getName()).log(Level.SEVERE, "CALL: function "+args[0]+" not found.");        }       return null;    }    private void exportFunction (Scriptable scope, String name) {        try {            Method m = Script.class.getMethod(name , Context.class, Scriptable.class, Object[].class, Function.class);            scope.put(name, scope, new FunctionObject(name , m, scope));        } catch (NoSuchMethodException ex) {            Logger.getLogger(Script.class.getName()).log(Level.SEVERE, null, ex);        } catch (SecurityException ex) {            Logger.getLogger(Script.class.getName()).log(Level.SEVERE, null, ex);        }    }    @Override    public void run () {//        System.out.println ("Script::Run");        Context cx = Context.enter();        try {            Scriptable scope = cx.initStandardObjects();            ScriptableObject.defineClass(scope, Cpe.class);            ScriptableObject.defineClass(scope, CpeDb.class);            Object[] arg = {lastInform, host, transferComplete};            Cpe cpe = (Cpe)cx.newObject(scope, "Cpe", arg);            scope.put("cpe", scope, cpe);            arg = new Object [1];            arg [0] = host;            CpeDb cpedb = (CpeDb)cx.newObject(scope, "CpeDb", arg);            scope.put("cpedb", scope, cpedb);                        exportFunction(scope, "call");            exportFunction(scope, "logger");            org.mozilla.javascript.Script scr = cx.compileString(script, "skriptas", 0, null);            Object result = scr.exec(cx, scope);            //Object result = cx.evaluateString(scope, script, "<cmd>", 1, null);            String resultString = Context.toString(result);            if (resultString != null) {                // cpedb.setScriptResult (resultString);            }//            System.err.println("Returned: " + Context.toString(result));        } catch (Exception e) {            System.out.println ("Run exception: "+e.getMessage());        } finally {            Context.exit();        }            }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -