com.caucho.quercus.env
Class JavaInvoker

java.lang.Object
  extended by com.caucho.quercus.env.Value
      extended by com.caucho.quercus.env.Callback
          extended by com.caucho.quercus.function.AbstractFunction
              extended by com.caucho.quercus.env.AbstractJavaMethod
                  extended by com.caucho.quercus.env.JavaInvoker
All Implemented Interfaces:
Callable, java.io.Serializable
Direct Known Subclasses:
JavaConstructor, JavaMethod, StaticFunction

public abstract class JavaInvoker
extends AbstractJavaMethod

Represents the introspected static function information.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class com.caucho.quercus.function.AbstractFunction
_bindingClass, _declaringClassName, _isClosure, _isConstructor, _isFinal, _isStatic, _parseIndex, _visibility
 
Fields inherited from class com.caucho.quercus.env.Value
NULL_VALUE_ARRAY, SCALAR_V
 
Constructor Summary
JavaInvoker(ModuleContext moduleContext, java.lang.reflect.Method method)
          Creates the statically introspected function.
JavaInvoker(ModuleContext moduleContext, java.lang.String name, java.lang.Class<?>[] param, java.lang.annotation.Annotation[][] paramAnn, java.lang.annotation.Annotation[] methodAnn, java.lang.Class<?> retType)
          Creates the statically introspected function.
 
Method Summary
 Value call(Env env, Value[] args)
          Evaluates the function.
 Value callMethod(Env env, QuercusClass qClass, Value qThis, Value[] args)
          Evaluates the method call.
 Value[] evalArguments(Env env, Expr fun, Expr[] args)
          Evaluates a function's argument, handling ref vs non-ref
protected  Expr[] getDefaultExprs()
          Returns the default expressions.
 boolean getHasEnv()
          Returns true if the environment is an argument.
 boolean getHasRestArgs()
          Returns true if the environment has rest-style arguments.
 Marshal[] getMarshalArgs()
          Returns the marshal arguments.
 int getMarshalingCost(Expr[] args)
           
 int getMarshalingCost(Value[] args)
          Returns the cost of marshaling for this method.
 int getMaxArgLength()
          Returns the maximum number of arguments allowed.
protected  java.lang.annotation.Annotation[] getMethodAnn()
          Returns the parameter annotations.
 int getMinArgLength()
          Returns the minimally required number of arguments.
 java.lang.String getName()
           
protected  java.lang.annotation.Annotation[][] getParamAnn()
          Returns the parameter annotations.
 Marshal getUnmarshalReturn()
          Returns the unmarshaller for the return
 void init()
           
abstract  java.lang.Object invoke(java.lang.Object obj, java.lang.Object[] args)
           
 boolean isBoolean()
          Returns true if the result is a boolean.
 boolean isCallUsesSymbolTable()
          Returns true if the call uses the symbol table
 boolean isCallUsesVariableArgs()
          Returns true if the call uses variable arguments.
 boolean isDouble()
          Returns true if the result is a double.
 boolean isLong()
          Returns true if the result is a long.
 boolean isRestReference()
          Returns true if the rest argument is a reference.
 boolean isString()
          Returns true if the result is a string.
 
Methods inherited from class com.caucho.quercus.env.AbstractJavaMethod
call, call, call, call, call, call, callCopy, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, getJavaDeclaringClass, getJavaParameterTypes, overload
 
Methods inherited from class com.caucho.quercus.function.AbstractFunction
callMethod, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callRef, callRef, callRef, callRef, callRef, callRef, callRef, errorPrivateAccess, errorProtectedAccess, getActualFunction, getArgs, getBindingClass, getBindingClassName, getCallbackName, getComment, getCompilationName, getDeclaringClass, getDeclaringClassName, getLocation, getType, isAbstract, isClosure, isConstructor, isFinal, isGlobal, isInternal, isObject, isPrivate, isProtected, isPublic, isReturnsReference, isStatic, isValid, setBindingClass, setClosure, setConstructor, setDeclaringClassName, setFinal, setGlobal, setParseIndex, setStatic, setVisibility, toFun, toString
 
Methods inherited from class com.caucho.quercus.env.Callback
callArray, callArray, callArray, toCallable
 
Methods inherited from class com.caucho.quercus.env.Value
abs, add, add, addOne, append, appendTo, appendTo, appendTo, appendTo, bitAnd, bitOr, bitXor, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, callMethodRef, charValueAt, checkPrivate, checkProtected, clone, cmp, containsKey, copy, copy, copy, copyArrayItem, copyReturn, copySaveFunArg, copyStringBuilder, copyTree, current, div, div, end, eq, eql, eqValue, findFunction, generate, geq, get, getArg, getArray, getArray, getBaseIterator, getCallableName, getCalledClass, getClassName, getCount, getCountRecursive, getDirty, getField, getFieldArg, getFieldArgRef, getFieldArray, getFieldObject, getFieldVar, getHashCode, getIterator, getKeyArray, getKeyIterator, getObject, getObject, getQuercusClass, getRef, getResourceType, getSize, getThisField, getThisFieldArg, getThisFieldArgRef, getThisFieldArray, getThisFieldObject, getThisFieldVar, getValueArray, getValueIterator, getValueType, getVar, gt, hasCurrent, hashCode, increment, initField, isA, isA, isArray, isBinary, isCallable, isDefault, isDoubleConvertible, isEmpty, isFieldInit, isLongConvertible, isNull, isNumberConvertible, isNumeric, isResource, isset, isset, issetField, issetThisField, isUnicode, isVar, jsonEncode, key, keyExists, length, leq, lshift, lt, mod, mul, mul, neg, next, nextIndex, pop, pos, postdecr, postincr, postincr, predecr, preincr, preincr, prev, print, print, printDepth, printJavaChar, printJavaString, printR, printRImpl, put, put, put, putField, putField, putField, putObject, putThisField, putThisField, putVar, remove, reset, rshift, serialize, serialize, set, setCharValueAt, setFieldInit, setJavaObject, shuffle, sub_rev, sub, sub, subOne, toArgRef, toArray, toArrayValue, toAutoArray, toAutoObject, toBigDecimal, toBigInteger, toBinaryValue, toBinaryValue, toBinaryValue, toBinaryValueMarshalCost, toBoolean, toBooleanMarshalCost, toByteArrayMarshalCost, toByteMarshalCost, toChar, toCharArrayMarshalCost, toCharMarshalCost, toDebugString, toDouble, toDoubleMarshalCost, toDoubleValue, toException, toFloatMarshalCost, toInputStream, toInt, toIntegerMarshalCost, toInternString, toJavaBoolean, toJavaByte, toJavaCalendar, toJavaCharacter, toJavaCollection, toJavaDate, toJavaDouble, toJavaFloat, toJavaInteger, toJavaList, toJavaLong, toJavaMap, toJavaObject, toJavaObject, toJavaObjectMarshalCost, toJavaObjectNotNull, toJavaShort, toJavaString, toJavaURL, toKey, toLocalRef, toLocalThis, toLocalValue, toLocalValueReadOnly, toLocalVar, toLocalVarDeclAsRef, toLong, toLongMarshalCost, toLongValue, toObject, toRef, toRefValue, toShortMarshalCost, toString, toStringBuilder, toStringBuilder, toStringBuilder, toStringBuilder, toStringMarshalCost, toStringValue, toStringValue, toStringValueMarshalCost, toUnicode, toUnicodeValue, toUnicodeValue, toUnicodeValueMarshalCost, toValue, toVar, unsetArray, unsetField, unsetThisArray, unsetThisField, valuesToArray, varDump, varDumpImpl, varExport
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JavaInvoker

public JavaInvoker(ModuleContext moduleContext,
                   java.lang.String name,
                   java.lang.Class<?>[] param,
                   java.lang.annotation.Annotation[][] paramAnn,
                   java.lang.annotation.Annotation[] methodAnn,
                   java.lang.Class<?> retType)
Creates the statically introspected function.


JavaInvoker

public JavaInvoker(ModuleContext moduleContext,
                   java.lang.reflect.Method method)
Creates the statically introspected function.

Method Detail

init

public void init()

getMinArgLength

public int getMinArgLength()
Returns the minimally required number of arguments.

Specified by:
getMinArgLength in class AbstractJavaMethod

getMaxArgLength

public int getMaxArgLength()
Returns the maximum number of arguments allowed.

Specified by:
getMaxArgLength in class AbstractJavaMethod

getHasEnv

public boolean getHasEnv()
Returns true if the environment is an argument.


getHasRestArgs

public boolean getHasRestArgs()
Returns true if the environment has rest-style arguments.

Specified by:
getHasRestArgs in class AbstractJavaMethod

isRestReference

public boolean isRestReference()
Returns true if the rest argument is a reference.


getUnmarshalReturn

public Marshal getUnmarshalReturn()
Returns the unmarshaller for the return


isCallUsesVariableArgs

public boolean isCallUsesVariableArgs()
Returns true if the call uses variable arguments.

Overrides:
isCallUsesVariableArgs in class AbstractFunction

isCallUsesSymbolTable

public boolean isCallUsesSymbolTable()
Returns true if the call uses the symbol table

Overrides:
isCallUsesSymbolTable in class AbstractFunction

isBoolean

public boolean isBoolean()
Returns true if the result is a boolean.

Overrides:
isBoolean in class AbstractFunction

isString

public boolean isString()
Returns true if the result is a string.

Overrides:
isString in class AbstractFunction

isLong

public boolean isLong()
Returns true if the result is a long.

Overrides:
isLong in class AbstractFunction

isDouble

public boolean isDouble()
Returns true if the result is a double.

Overrides:
isDouble in class AbstractFunction

getName

public java.lang.String getName()
Overrides:
getName in class AbstractFunction

getMarshalArgs

public Marshal[] getMarshalArgs()
Returns the marshal arguments.


getParamAnn

protected java.lang.annotation.Annotation[][] getParamAnn()
Returns the parameter annotations.


getMethodAnn

protected java.lang.annotation.Annotation[] getMethodAnn()
Returns the parameter annotations.


getDefaultExprs

protected Expr[] getDefaultExprs()
Returns the default expressions.


evalArguments

public Value[] evalArguments(Env env,
                             Expr fun,
                             Expr[] args)
Evaluates a function's argument, handling ref vs non-ref

Overrides:
evalArguments in class AbstractFunction
args - the user's arguments
Returns:
the user arguments augmented by any defaults

getMarshalingCost

public int getMarshalingCost(Value[] args)
Returns the cost of marshaling for this method.

Specified by:
getMarshalingCost in class AbstractJavaMethod

getMarshalingCost

public int getMarshalingCost(Expr[] args)
Specified by:
getMarshalingCost in class AbstractJavaMethod

call

public Value call(Env env,
                  Value[] args)
Description copied from class: AbstractFunction
Evaluates the function.

Specified by:
call in interface Callable
Overrides:
call in class AbstractJavaMethod
Parameters:
env - the calling environment

callMethod

public Value callMethod(Env env,
                        QuercusClass qClass,
                        Value qThis,
                        Value[] args)
Description copied from class: AbstractFunction
Evaluates the method call.

Specified by:
callMethod in class AbstractJavaMethod

invoke

public abstract java.lang.Object invoke(java.lang.Object obj,
                                        java.lang.Object[] args)