Package org.jruby.java.proxies
Class JavaProxy
java.lang.Object
org.jruby.RubyBasicObject
org.jruby.RubyObject
org.jruby.java.proxies.JavaProxy
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<IRubyObject>,InstanceVariables,InternalVariables,IRubyObject,CoreObjectType
- Direct Known Subclasses:
ArrayJavaProxy,ConcreteJavaProxy,InterfaceJavaProxy
- 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 JavaObjectprivate static final RubyHash.VisitorWithState<Map>private static final Stringprivate static final String(package private) ObjectFields 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 TypeMethodDescriptionprotected JavaObjectasJavaObject(Object object) private static voidcheckArgSizeMismatch(Ruby runtime, int expected, RubyArray argTypes) protected Objectprivate voidconfirmCachedProxy(String message) static RubyClasscreateJavaProxy(ThreadContext context) final ObjectOur version of Data_Get_Struct.final voiddataWrapStruct(Object object) Our version of Data_Wrap_Struct.equal_p(ThreadContext context, IRubyObject other) rb_obj_equal Will use Java identity equality.static IRubyObjectfield_accessor(ThreadContext context, IRubyObject self, IRubyObject[] args) static IRubyObjectfield_reader(ThreadContext context, IRubyObject self, IRubyObject[] args) static IRubyObjectfield_writer(ThreadContext context, IRubyObject self, IRubyObject[] args) private static voidfindFields(ThreadContext context, RubyModule topModule, IRubyObject[] args, boolean asReader, boolean asWriter) getFieldListFromArgs(ThreadContext context, IRubyObject[] args) Create a name/newname map of fields to be exposed as methods.Class<?>Will return the Java interface that most closely can represent this object, when working through Java integration translations.static IRubyObjectgetJavaClass(RubyModule target) private MethodgetMethod(ThreadContext context, String name, Class... argTypes) private MethodInvokergetMethodInvoker(Method method) final Objectprivate RubyMethodgetRubyMethod(ThreadContext context, String name, Class... argTypes) rb_singleton_class Note: this method is specialized for RubyFixnum, RubySymbol, RubyNil and RubyBoolean Will either return the existing singleton class for this object, or create a new one and return that.getVariable(int index) static IRubyObjectinherited(ThreadContext context, IRubyObject recv, IRubyObject subclass) initialize_copy(IRubyObject original) rb_obj_init_copy Initializes this object as a copy of the original, that is the parameter to this object.protected intWe override RubyBasicObject.inspectHashCode to be the identity hash of the contained object, so it remains consistent across wrappers.static voidinstallField(ThreadContext context, String asName, Field field, RubyModule target) private static voidinstallField(ThreadContext context, String asName, Field field, RubyModule target, boolean asReader, Boolean asWriter) private static voidinstallField(ThreadContext context, Map<String, String> fieldMap, Field field, RubyModule module, boolean asReader, boolean asWriter) static IRubyObjectjava_class(IRubyObject self) java_method(ThreadContext context, IRubyObject rubyName) java_method(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes) java_send(ThreadContext context, IRubyObject rubyName) java_send(ThreadContext context, IRubyObject[] args) java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes) java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) marshal_load(ThreadContext context, IRubyObject str) static IRubyObjectnew_array(ThreadContext context, IRubyObject self, IRubyObject len) static IRubyObjectop_aref(ThreadContext context, IRubyObject self, IRubyObject[] args) static IRubyObjectpersistent(IRubyObject clazz, IRubyObject value) static IRubyObjectpersistent(ThreadContext context, IRubyObject clazz) static voidsetJavaClass(RubyClass target, Class<?> javaClass) (package private) static voidsetJavaClass(Ruby runtime, InternalVariables target, Class<?> javaClass) private static voidsetJavaClass(InternalVariables target, IRubyObject javaClass) static voidsetJavaClass(IRubyObject target, Class<?> javaClass) voidvoidsetVariable(int index, Object value) static RubyClasssingleton_class(IRubyObject self) <T> TConvert the object to the specified Java class, if possible.unwrap()Methods inherited from class org.jruby.RubyObject
attachToObjectSpace, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, convertToType, createObjectClass, dig, dig1, dig2, eqlInternal, equalInternal, equals, getNativeClassIndex, hashCode, inspect, op_eqq, puts, specificEval, toRubyString, toStringMethods 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, dataGetStructChecked, decode, display, dup, ensureInstanceVariablesSettable, eql, eql_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, getSingletonClassClone, getSingletonClassCloneAndAttach, getType, getVariableCount, getVariableList, getVariableNameList, hash, hashyInspect, hasInstanceVariable, hasInstanceVariables, hasInternalVariable, hasVariables, id, infectBy, initialize, initialize19, inspect, 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, 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, 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, to_s, trust, type, type_deprecated, untaint, untrust, untrusted_p, validateInstanceVariable, validateInstanceVariable, validateInstanceVariable, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableRemove, variableTableStore, variableTableSync, yieldUnder, yieldUnder
-
Field Details
-
javaObject
-
object
Object object -
MapPopulatorVisitor
-
NONPERSISTENT_IVAR_MESSAGE
- See Also:
-
NONPERSISTENT_SINGLETON_MESSAGE
- See Also:
-
-
Constructor Details
-
JavaProxy
-
JavaProxy
-
-
Method Details
-
createJavaProxy
-
java_class
-
getJavaClass
- Parameters:
target- (Java) proxy module/class- Returns:
- a java.lang.Class instance proxy (e.g. a java.lang.Integer.class wrapper)
-
setJavaClass
-
setJavaClass
-
setJavaClass
-
setJavaClass
-
dataGetStruct
Description copied from interface:IRubyObjectOur version of Data_Get_Struct. Returns a wrapped data value if there is one, otherwise returns null.- Specified by:
dataGetStructin interfaceIRubyObject- Overrides:
dataGetStructin classRubyBasicObject- Returns:
- the object wrapped.
- See Also:
-
dataWrapStruct
Description copied from interface:IRubyObjectOur version of Data_Wrap_Struct. This method will just set a private pointer to the object provided. This pointer is transient and will not be accessible from Ruby.- Specified by:
dataWrapStructin interfaceIRubyObject- Overrides:
dataWrapStructin classRubyBasicObject- Parameters:
object- the object to wrap- See Also:
-
getObject
-
setObject
-
unwrap
-
asJavaObject
-
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
-
inherited
-
singleton_class
-
op_aref
-
new_array
-
persistent
-
persistent
-
initialize_copy
Description copied from class:RubyBasicObjectrb_obj_init_copy Initializes this object as a copy of the original, that is the parameter to this object. Will make sure that the argument actually has the same real class as this object. It shouldn't be possible to initialize an object with something totally different.- Overrides:
initialize_copyin classRubyBasicObject
-
cloneObject
-
getFieldListFromArgs
Create a name/newname map of fields to be exposed as methods. -
installField
private static void installField(ThreadContext context, Map<String, String> fieldMap, Field field, RubyModule module, boolean asReader, boolean asWriter) -
installField
private static void installField(ThreadContext context, String asName, Field field, RubyModule target, boolean asReader, Boolean asWriter) -
installField
public static void installField(ThreadContext context, String asName, Field field, RubyModule target) -
findFields
private static void findFields(ThreadContext context, RubyModule topModule, IRubyObject[] args, boolean asReader, boolean asWriter) -
field_accessor
public static IRubyObject field_accessor(ThreadContext context, IRubyObject self, IRubyObject[] args) -
field_reader
-
field_writer
-
equal_p
Description copied from class:RubyBasicObjectrb_obj_equal Will use Java identity equality.- Overrides:
equal_pin classRubyBasicObject
-
java_send
-
java_send
-
java_send
public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) -
java_send
-
checkArgSizeMismatch
-
java_method
-
java_method
-
marshal_dump
-
marshal_load
-
inspectHashCode
protected int inspectHashCode()We override RubyBasicObject.inspectHashCode to be the identity hash of the contained object, so it remains consistent across wrappers.- Overrides:
inspectHashCodein classRubyBasicObject- Returns:
- The identity hashcode of the wrapped object
-
getMethod
-
getMethodInvoker
-
getRubyMethod
-
toJava
Description copied from interface:IRubyObjectConvert the object to the specified Java class, if possible.- Specified by:
toJavain interfaceIRubyObject- Overrides:
toJavain classRubyBasicObject- Parameters:
type- The target type to which the object should be converted.- See Also:
-
getVariable
- Specified by:
getVariablein interfaceIRubyObject- Overrides:
getVariablein classRubyBasicObject
-
setVariable
- Specified by:
setVariablein interfaceIRubyObject- Overrides:
setVariablein classRubyBasicObject
-
getSingletonClass
rb_singleton_class Note: this method is specialized for RubyFixnum, RubySymbol, RubyNil and RubyBoolean Will either return the existing singleton class for this object, or create a new one and return that.- Specified by:
getSingletonClassin interfaceIRubyObject- Overrides:
getSingletonClassin classRubyBasicObject- Returns:
- the Ruby singleton class
-
confirmCachedProxy
-