org.mozilla.javascript.Function类的使用及代码示例

x33g5p2x  于2022-01-19 转载在 JavaScript  
字(11.9k)|赞(0)|评价(0)|浏览(203)

本文整理了Java中org.mozilla.javascript.Function类的一些代码示例,展示了Function类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Function类的具体详情如下:
包路径:org.mozilla.javascript.Function
类名称:Function

Function介绍

[英]This is interface that all functions in JavaScript must implement. The interface provides for calling functions and constructors.
[中]这是JavaScript中所有函数都必须实现的接口。该接口提供了调用函数和构造函数的功能。

代码示例

代码示例来源:origin: stackoverflow.com

String script = "function abc(x,y) {return x+y;}"
    + "function def(u,v) {return u-v;}";
Context context = Context.enter();
try {
  ScriptableObject scope = context.initStandardObjects();
  context.evaluateString(scope, script, "script", 1, null);
  Function fct = (Function)scope.get("abc", scope);
  Object result = fct.call(
      context, scope, scope, new Object[] {2, 3});
  System.out.println(Context.jsToJava(result, int.class));
} finally {
  Context.exit();
}

代码示例来源:origin: TeamNewPipe/NewPipeExtractor

private String decryptSignature(String encryptedSig, String decryptionCode) throws DecryptException {
  Context context = Context.enter();
  context.setOptimizationLevel(-1);
  Object result;
  try {
    ScriptableObject scope = context.initStandardObjects();
    context.evaluateString(scope, decryptionCode, "decryptionCode", 1, null);
    Function decryptionFunc = (Function) scope.get("decrypt", scope);
    result = decryptionFunc.call(context, scope, scope, new Object[]{encryptedSig});
  } catch (Exception e) {
    throw new DecryptException("could not get decrypt signature", e);
  } finally {
    Context.exit();
  }
  return result == null ? "" : result.toString();
}

代码示例来源:origin: org.bsc/jvm-npm-rhino

@Override
public Object invokeMethod(Object thiz, final String name, final Object... args)
    throws ScriptException, NoSuchMethodException {
  if (thiz == null) {
    throw new java.lang.IllegalArgumentException("thiz is null!");
  }
  if (name == null) {
    throw new java.lang.IllegalArgumentException("method name is null");
  }
  if (!(thiz instanceof Scriptable)) {
    thiz = Context.toObject(thiz, topLevel);
  }
  final Scriptable localScope = (Scriptable) thiz;
  final Object obj = ScriptableObject.getProperty(localScope, name);
  if (!(obj instanceof org.mozilla.javascript.Function)) {
    throw new NoSuchMethodException("no such method: " + name);
  }
  return callInContext((cx) -> {
    final org.mozilla.javascript.Function func = (org.mozilla.javascript.Function) obj;
    Scriptable parentScope = func.getParentScope();
    if (parentScope == null) {
      parentScope = topLevelProto();
    }
    Object result = func.call(cx, parentScope, localScope, wrapArguments(args));
    return unwrapReturnValue(result);
  });
}

代码示例来源:origin: woder/TorchBot

@SuppressWarnings("deprecation")
public void handleEvent(Event event){
  List<Plugin> pul = getPluginEvents(event);    
  Context context = Context.enter();
  try {
   for(int i = 0; i < pul.toArray().length; i++){
    try {
      ScriptableObject scope = pul.get(i).scope;
      Function fct = (Function)scope.get(event.type, scope);
      fct.call(context, scope, scope, event.param);   
    } catch (SecurityException e) {
      c.gui.addText(ChatColor.DARK_AQUA + "Warning: Security error encountered while trying to pass " + event.type + " to " + pul.get(i).getName() + "\n" + e.getMessage());
    } catch (IllegalArgumentException e) {
      c.gui.addText(ChatColor.DARK_AQUA + "Warning: Wrong amount of argument error encountered while trying to pass " + event.type + " to " + pul.get(i).getName() + "\n" + e.getMessage());
    }
   }
  }finally{
    Context.exit();
  }
}

代码示例来源:origin: org.apache.cocoon/cocoon-expression-language-impl

public Object invoke(Object thisArg) throws Exception {
  Context cx = Context.enter();
  try {
    Scriptable thisObj = !(thisArg instanceof Scriptable) ?
        Context.toObject(thisArg, scope) : (Scriptable)thisArg;
    Object result = ScriptableObject.getProperty(thisObj, name);
    if (result == Scriptable.NOT_FOUND) {
      result = ScriptableObject.getProperty(thisObj, "get" + StringUtils.capitalize(name));
      if (result != Scriptable.NOT_FOUND && result instanceof Function) {
        try {
          result = ((Function)result).call(
              cx, ScriptableObject.getTopLevelScope(thisObj), thisObj, new Object[] {});
        } catch (JavaScriptException exc) {
          exc.printStackTrace();
          result = null;
        }
      }
    }
    return unwrap(result);
  } finally {
    Context.exit();
  }
}

代码示例来源:origin: stackoverflow.com

String script = "function abc(x,y) {return x+y;}";
Context context = Context.enter();
try {
  ScriptableObject scope = context.initStandardObjects();
  Scriptable that = context.newObject(scope);
  Function fct = context.compileFunction(scope, script, "script", 1, null);
  Object result = fct.call(
      context, scope, that, new Object[] {2, 3});
  System.out.println(Context.jsToJava(result, int.class));
} finally {
  Context.exit();
}

代码示例来源:origin: rhino/js

/**
 * Call a method of an object.
 * @param cx the Context object associated with the current thread.
 * @param obj the JavaScript object
 * @param methodName the name of the function property
 * @param args the arguments for the call
 */
public static Object callMethod(Context cx, Scriptable obj,
                String methodName,
                Object[] args)
{
  Object funObj = getProperty(obj, methodName);
  if (!(funObj instanceof Function)) {
    throw ScriptRuntime.notFunctionError(obj, methodName);
  }
  Function fun = (Function)funObj;
  // XXX: What should be the scope when calling funObj?
  // The following favor scope stored in the object on the assumption
  // that is more useful especially under dynamic scope setup.
  // An alternative is to check for dynamic scope flag
  // and use ScriptableObject.getTopLevelScope(fun) if the flag is not
  // set. But that require access to Context and messy code
  // so for now it is not checked.
  Scriptable scope = ScriptableObject.getTopLevelScope(obj);
  if (cx != null) {
    return fun.call(cx, scope, obj, args);
  } else {
    return Context.call(null, fun, scope, obj, args);
  }
}

代码示例来源:origin: datacleaner/DataCleaner

@Initialize
public void init() {
  _contextFactory = new ContextFactory();
  final Context context = _contextFactory.enterContext();
  try {
    _script = context.compileString(sourceCode, this.getClass().getSimpleName(), 1, null);
    _sharedScope = context.initStandardObjects();
    JavaScriptUtils.addToScope(_sharedScope, new JavaScriptLogger(), "logger", "log");
    JavaScriptUtils.addToScope(_sharedScope, System.out, "out");
    _script.exec(context, _sharedScope);
    _transformerObj = (NativeObject) _sharedScope.get("transformerObj");
    if (_transformerObj == null) {
      throw new IllegalStateException("Required JS object 'transformerObj' not found!");
    }
    _initializeFunction = (Function) _transformerObj.get("initialize");
    _transformFunction = (Function) _transformerObj.get("transform");
    _closeFunction = (Function) _transformerObj.get("close");
    _initializeFunction.call(context, _sharedScope, _sharedScope, new Object[0]);
  } finally {
    Context.exit();
  }
}

代码示例来源:origin: io.apisense/rhino-android

private Object call(Function func, Object[] args) {
  Context cx = Context.getCurrentContext();
  Scriptable thisObj = getAdaptee();
  Scriptable scope = func.getParentScope();
  try {
    return func.call(cx, scope, thisObj, args);
  } catch (RhinoException re) {
    throw Context.reportRuntimeError(re.getMessage());
  }
}

代码示例来源:origin: apache/incubator-druid

@Override
 public String apply(Object input)
 {
  // ideally we need a close() function to discard the context once it is not used anymore
  Context cx = Context.getCurrentContext();
  if (cx == null) {
   cx = contextFactory.enterContext();
  }
  final Object res = fn.call(cx, scope, scope, new Object[]{input});
  return res != null ? Context.toString(res) : null;
 }
};

代码示例来源:origin: org.freemarker/freemarker

public Object exec(List arguments) throws TemplateModelException {
    Context cx = Context.getCurrentContext();
    Object[] args = arguments.toArray();
    BeansWrapper wrapper = getWrapper();
    for (int i = 0; i < args.length; i++) {
      args[i] = wrapper.unwrap((TemplateModel) args[i]);
    }
    return wrapper.wrap(((Function) getScriptable()).call(cx, 
        ScriptableObject.getTopLevelScope(fnThis), fnThis, args));
  }
}

代码示例来源:origin: mulesoft-labs/rhinodo

@Override
  public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
    Scriptable curr = cx.newObject(scope);
    Scriptable prev = cx.newObject(scope);
    long mtime = new File(item).lastModified();
    Object date = cx.evaluateString(scope, "new Date(" + mtime + ");", "date", 0, null);
    ScriptableObject.putProperty(prev, "mtime", date);
    ScriptableObject.putProperty(curr, "mtime", date);
    callback.call(cx,scope,thisObj, new Object[]{prev,curr});
    return Undefined.instance;
  }
});

代码示例来源:origin: mulesoft-labs/rhinodo

@Override
  public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
    Scriptable repl = (Scriptable) ScriptableObject.getTypedProperty(scope, "require", Function.class)
        .call(cx, scope, thisObj, new Object[]{"repl"});
    Function start = ScriptableObject.getTypedProperty(repl, "start", Function.class);
    Scriptable options = cx.newObject(scope);
    ScriptableObject.putProperty(options, "prompt", Context.javaToJS(PROMPT, scope));
    ScriptableObject.putProperty(options, "terminal", Context.javaToJS(true, scope));
    start.call(cx, scope, thisObj, new Object[]{options});
    return Undefined.instance;
  }
});

代码示例来源:origin: apache/incubator-druid

@Override
 public Object apply(Object input)
 {
  // ideally we need a close() function to discard the context once it is not used anymore
  Context cx = Context.getCurrentContext();
  if (cx == null) {
   cx = contextFactory.enterContext();
  }
  final Object res = fn.call(cx, scope, scope, new Object[]{input});
  return res != null ? Context.toObject(res, scope) : null;
 }
};

代码示例来源:origin: rhino/js

/**
 * @deprecated The method is only present for compatibility.
 */
public static Object call(Context cx, Object fun, Object thisArg,
             Object[] args, Scriptable scope)
{
  if (!(fun instanceof Function)) {
    throw notFunctionError(toString(fun));
  }
  Function function = (Function)fun;
  Scriptable thisObj = toObjectOrNull(cx, thisArg);
  if (thisObj == null) {
    throw undefCallError(thisObj, "function");
  }
  return function.call(cx, scope, thisObj, args);
}

代码示例来源:origin: apache/incubator-druid

@Override
 public double apply(Object[] args)
 {
  // ideally we need a close() function to discard the context once it is not used anymore
  Context cx = Context.getCurrentContext();
  if (cx == null) {
   cx = contextFactory.enterContext();
  }
  return Context.toNumber(fn.call(cx, scope, scope, args));
 }
};

代码示例来源:origin: io.apigee/rhino

/**
 * Get a string representing the script stack in a way that is compatible with V8.
 * If the function "Error.prepareStackTrace" is defined, then call that function,
 * passing it an array of CallSite objects. Otherwise, behave as if "getScriptStackTrace"
 * was called instead.
 * @since 1.7R5
 */
public Object getPreparedScriptStackTrace(Context cx, Scriptable scope, Scriptable err)
{
  Scriptable top = ScriptableObject.getTopLevelScope(scope);
  Scriptable error = TopLevel.getBuiltinCtor(cx, top, TopLevel.Builtins.Error);
  Object prepare = error.get("prepareStackTrace", error);
  if (prepare instanceof Function) {
    Function prepareFunc = (Function)prepare;
    ScriptStackElement[] elts = getScriptStack();
    Object[] rawStack = new Object[elts.length];
    for (int i = 0; i < elts.length; i++) {
      rawStack[i] = cx.newObject(top, "CallSite");
      ((NativeCallSite)rawStack[i]).setElement(elts[i]);
    }
    return prepareFunc.call(cx, scope, null, new Object[] { err, cx.newArray(top, rawStack) });
  }
  return getScriptStackTrace();
}

代码示例来源:origin: org.bsc/jvm-npm-rhino

return callInContext((cx) -> {
  final Scriptable localScope = cx.newObject(topLevel);
  localScope.setPrototype(topLevel);
  localScope.setParentScope(null);
  final Object obj = ScriptableObject.getProperty(localScope, name);
  if (!(obj instanceof org.mozilla.javascript.Function)) {
    throw new RuntimeException(new ScriptException(format("no such method: %s", name)));
  Scriptable parentScope = func.getParentScope();
  if (parentScope == null) {
    parentScope = topLevelProto();
  Object result = func.call(cx, parentScope, localScope, wrapArguments(args));
  return unwrapReturnValue(result);

代码示例来源:origin: io.apisense/rhino-android

public Scriptable construct(Context cx, Scriptable scope, Object[] args)
throws RhinoException {
  if (isPrototype) {
    Scriptable topLevel = ScriptableObject.getTopLevelScope(scope);
    JSAdapter newObj;
    if (args.length > 0) {
      newObj = new JSAdapter(Context.toObject(args[0], topLevel));
    } else {
      throw Context.reportRuntimeError("JSAdapter requires adaptee");
    }
    return newObj;
  } else {
    Scriptable tmp = getAdaptee();
    if (tmp instanceof Function) {
      return ((Function)tmp).construct(cx, scope, args);
    } else {
      throw Context.reportRuntimeError("TypeError: not a constructor");
    }
  }
}

代码示例来源:origin: org.apache.xmlgraphics/batik-bridge

public Object run(Context cx) {
    Object[] args = ab.buildArguments();
    handler.call(cx, handler.getParentScope(), globalObject, args);
    return null;
  }
});

相关文章