Package org.jruby.javasupport.proxy
Class JavaProxyClass
java.lang.Object
org.jruby.RubyBasicObject
org.jruby.RubyObject
org.jruby.javasupport.proxy.JavaProxyReflectionObject
org.jruby.javasupport.proxy.JavaProxyClass
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<IRubyObject>,InstanceVariables,InternalVariables,IRubyObject,CoreObjectType
Generalized proxy for classes and interfaces.
API looks a lot like java.lang.reflect.Proxy, except that you can specify a
super class in addition to a set of interfaces.
The main implication for users of this class is to handle the case where a
proxy method overrides an existing method, because in this case the
invocation handler should "default" to calling the super implementation
{JavaProxyMethod.invokeSuper}.
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.jruby.RubyObject
RubyObject.DataNested classes/interfaces inherited from class org.jruby.RubyBasicObject
RubyBasicObject.Finalizer -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate JavaProxyConstructor[]private static final ThreadLocal<Object[]>These objects are to allow static initializers in reified code.private final HashMap<String,ArrayList<JavaProxyMethod>> private final ArrayList<JavaProxyMethod>private final ClassFields inherited from class org.jruby.RubyObject
IVAR_INSPECTING_OBJECT_ALLOCATOR, OBJECT_ALLOCATOR, REIFYING_OBJECT_ALLOCATORFields inherited from class org.jruby.RubyBasicObject
ALL_F, BASICOBJECT_ALLOCATOR, COMPARE_BY_IDENTITY_F, ERR_INSECURE_SET_INST_VAR, FALSE_F, FL_USHIFT, flags, FROZEN_F, IS_OVERLAID_F, metaClass, NEVER, NIL_F, REFINED_MODULE_F, STAMP_OFFSET, TAINTED_F, UNDEF, UNTRUST_F, USER0_F, USER1_F, USER2_F, USER3_F, USER4_F, USER5_F, USER6_F, USER7_F, USER8_F, USER9_F, USERA_F, VAR_TABLE_OFFSET, varTable, varTableStampFields inherited from interface org.jruby.runtime.builtin.IRubyObject
NULL_ARRAY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic IntegeraddStaticInitLookup(Object... objects) final RubyArraystatic RubyClasscreateJavaProxyClassClass(Ruby runtime, RubyModule Java) static voidcreateJavaProxyClasses(Ruby runtime, RubyModule Java) static voidbooleanThis override does not do a "checked" dispatch.static StringgenerateSuperName(String className, String superName) Generate a "super" stub for the given proxy class name and super method name.static RubyObjectget_with_class(IRubyObject self, IRubyObject obj) getConstructor(Class[] args) Class[]final ClassWill return the Java interface that most closely can represent this object, when working through Java integration translations.static JavaProxyClassgetProxyClass(Ruby runtime, RubyClass clazz) static Object[]getStaticInitLookup(int id) getValue()inthashCode()This override does not do "checked" dispatch since Object usually has #hash defined.voidinitMethod(String name, String desc, boolean hasSuper) methods()final Stringprivate static Class[]parse(ClassLoader loader, String desc) static JavaProxyClasssetProxyClassReified(Ruby runtime, RubyClass clazz, Class<? extends ReifiedJavaProxy> reified, boolean allocator) Methods inherited from class org.jruby.javasupport.proxy.JavaProxyReflectionObject
aref, aset, hash, is_java_proxy, java_class, java_type, length, op_eqq, op_equal, op_equal, registerRubyMethods, same, to_s, toClassArray, toRubyArray, toStringMethods inherited from class org.jruby.RubyObject
attachToObjectSpace, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, convertToType, createObjectClass, dig, dig1, dig2, eqlInternal, equalInternal, getNativeClassIndex, inspect, puts, specificEval, toRubyStringMethods inherited from class org.jruby.RubyBasicObject
addFinalizer, anyToString, asJavaString, asString, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callSuper, checkArrayType, checkCallMethod, checkCallMethod, checkFrozen, checkStringType, checkStringType19, compareTo, convertToArray, convertToFloat, convertToHash, convertToInteger, convertToInteger, convertToInteger, convertToString, copyInstanceVariablesInto, copySpecialInstanceVariables, createBasicObjectClass, dataGetStruct, dataGetStructChecked, dataWrapStruct, decode, display, dup, ensureInstanceVariablesSettable, eql, eql_p, equal_p, equal_p19, evalUnder, extend, fastGetInstanceVariable, fastGetInternalVariable, fastHasInstanceVariable, fastHasInternalVariable, fastSetInstanceVariable, fastSetInternalVariable, freeze, frozen_p, getFFIHandle, getFlag, getInstanceEvalClass, getInstanceVariable, getInstanceVariableList, getInstanceVariableNameList, getInstanceVariables, getInternalVariable, getInternalVariables, getMetaClass, getMetaClass, getNativeHandle, getNativeTypeIndex, getObjectId, getRuntime, getSingletonClass, getSingletonClassClone, getSingletonClassCloneAndAttach, getType, getVariable, getVariableCount, getVariableList, getVariableNameList, hashyInspect, hasInstanceVariable, hasInstanceVariables, hasInternalVariable, hasVariables, id, infectBy, initialize, initialize_copy, initialize19, inspect, inspectHashCode, instance_eval, instance_eval, instance_eval, instance_eval, instance_eval19, instance_eval19, instance_eval19, instance_eval19, instance_exec, instance_exec19, instance_of_p, instance_variable_defined_p, instance_variable_get, instance_variable_set, instance_variables, instance_variables19, isBuiltin, isClass, isFalse, isFrozen, isImmediate, isModule, isNil, isSpecialConst, isSpecialObject, isTaint, isTrue, isUntrusted, kind_of_p, makeMetaClass, method, method_missing, method_missing19, method19, methods, methods, methods19, nil_p, nonFixnumHashCode, OBJ_INIT_COPY, objInitCopy, op_cmp, op_equal_19, op_match, op_match19, op_not, op_not_equal, op_not_match, private_methods, private_methods19, protected_methods, protected_methods19, public_methods, public_methods19, rbClone, rbClone, rbInspect, remove_instance_variable, removeFinalizers, removeInstanceVariable, removeInternalVariable, respond_to_p, respond_to_p, respond_to_p19, respond_to_p19, respondsTo, respondsToMissing, respondsToMissing, send, send, send, send, send, send19, send19, send19, send19, setFFIHandle, setFlag, setFrozen, setInstanceVariable, setInternalVariable, setMetaClass, setNativeHandle, setTaint, setUntrusted, setVariable, singleton_method, singleton_method_added, singleton_method_added19, singleton_method_removed, singleton_method_removed19, singleton_method_undefined, singleton_method_undefined19, singleton_methods, specificEval, specificEval, specificEval, specificEval, syncVariables, syncVariables, taint, taint, tainted_p, testFrozen, testFrozen, to_a, to_a, toJava, trust, type, type_deprecated, untaint, untrust, untrusted_p, validateInstanceVariable, validateInstanceVariable, validateInstanceVariable, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableRemove, variableTableStore, variableTableSync, yieldUnder, yieldUnder
-
Field Details
-
proxyClass
-
methods
-
methodMap
-
constructors
-
EXCLUDE_MODULES
-
lookup
These objects are to allow static initializers in reified code. See RubyClass.BaseReifier for details
-
-
Constructor Details
-
JavaProxyClass
-
-
Method Details
-
equals
Description copied from class:RubyObjectThis override does not do a "checked" dispatch.- Overrides:
equalsin classJavaProxyReflectionObject- See Also:
-
hashCode
public int hashCode()Description copied from class:RubyObjectThis override does not do "checked" dispatch since Object usually has #hash defined.- Overrides:
hashCodein classJavaProxyReflectionObject- See Also:
-
getValue
-
getSuperclass
-
getInterfaces
-
getConstructors
-
getConstructor
public JavaProxyConstructor getConstructor(Class[] args) throws SecurityException, NoSuchMethodException -
getMethods
-
getMethod
-
getJavaClass
Description copied from class:RubyBasicObjectWill return the Java interface that most closely can represent this object, when working through Java integration translations.- Specified by:
getJavaClassin interfaceIRubyObject- Overrides:
getJavaClassin classRubyBasicObject- Returns:
- the true Java class of this (Ruby) object
-
initMethod
-
generateSuperName
Generate a "super" stub for the given proxy class name and super method name. This name is intended to be unique to this class and method in order to allow jumping into the super chain at any point in the hierarchy, bypassing the default behavior of virtual and reflective calls.- Parameters:
className- the proxy class namesuperName- the super method name- Returns:
- a unique stub method name for the given proxy class and super method
-
parse
- Throws:
ClassNotFoundException
-
createJavaProxyClasses
-
createJavaProxyClassClass
-
get_with_class
-
setProxyClassReified
public static JavaProxyClass setProxyClassReified(Ruby runtime, RubyClass clazz, Class<? extends ReifiedJavaProxy> reified, boolean allocator) -
addStaticInitLookup
-
ensureStaticIntConsumed
public static void ensureStaticIntConsumed() -
getStaticInitLookup
-
getProxyClass
-
superclass
-
methods
-
interfaces
-
constructors
-
nameOnInspection
-