org.jruby.javasupport.proxy
Class JavaProxyClass

java.lang.Object
  extended by org.jruby.RubyBasicObject
      extended by org.jruby.RubyObject
          extended by org.jruby.javasupport.proxy.JavaProxyReflectionObject
              extended by org.jruby.javasupport.proxy.JavaProxyClass
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<IRubyObject>, InstanceVariables, InternalVariables, IRubyObject, CoreObjectType

public class JavaProxyClass
extends JavaProxyReflectionObject

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}.

Author:
krab@trifork.com
See Also:
Proxy, Serialized Form

Nested Class Summary
static class JavaProxyClass.ProxyMethodImpl
           
 
Nested classes/interfaces inherited from class org.jruby.RubyObject
RubyObject.Data, RubyObject.ObjectMethods
 
Nested classes/interfaces inherited from class org.jruby.RubyBasicObject
RubyBasicObject.BasicObjectMethods, RubyBasicObject.Finalizer
 
Field Summary
 
Fields inherited from class org.jruby.RubyObject
OBJECT_ALLOCATOR
 
Fields inherited from class org.jruby.RubyBasicObject
ALL_F, COMPARE_BY_IDENTITY_F, ERR_INSECURE_SET_INST_VAR, FALSE_F, FL_USHIFT, flags, FROZEN_F, metaClass, NEVER, NIL_F, TAINTED_F, UNDEF, UNTRUSTED_F, USER0_F, USER1_F, USER2_F, USER3_F, USER4_F, USER5_F, USER6_F, USER7_F
 
Fields inherited from interface org.jruby.runtime.builtin.IRubyObject
NULL_ARRAY
 
Method Summary
 RubyArray constructors()
           
static RubyClass createJavaProxyClassClass(Ruby runtime, RubyModule javaModule)
           
static void createJavaProxyModule(Ruby runtime)
           
 boolean equals(java.lang.Object other)
          This method is just a wrapper around the Ruby "==" method, provided so that RubyObjects can be used as keys in the Java HashMap object underlying RubyHash.
static RubyObject get_with_class(IRubyObject recv, IRubyObject obj)
           
static RubyObject get(IRubyObject recv, IRubyObject obj)
           
 JavaProxyConstructor getConstructor(java.lang.Class[] args)
           
 JavaProxyConstructor[] getConstructors()
           
 java.lang.Class[] getInterfaces()
           
 java.lang.Class getJavaClass()
          Will return the Java interface that most closely can represent this object, when working through JAva integration translations.
 JavaProxyMethod getMethod(java.lang.String name, java.lang.Class[] parameterTypes)
           
 JavaProxyMethod[] getMethods()
           
static JavaProxyClass getProxyClass(Ruby runtime, java.lang.Class superClass, java.lang.Class[] interfaces)
           
static JavaProxyClass getProxyClass(Ruby runtime, java.lang.Class superClass, java.lang.Class[] interfaces, java.util.Set names)
           
 java.lang.Class getSuperclass()
           
 java.lang.Object getValue()
           
 int hashCode()
          Override the Object#hashCode method to make sure that the Ruby hash is actually used as the hashcode for Ruby objects.
 RubyArray interfaces()
           
 RubyArray methods()
           
 java.lang.String nameOnInspection()
           
static java.lang.Object newProxyInstance(Ruby runtime, java.lang.Class superClass, java.lang.Class[] interfaces, java.lang.Class[] constructorParameters, java.lang.Object[] constructorArgs, JavaProxyInvocationHandler handler)
           
 RubyObject superclass()
           
 
Methods inherited from class org.jruby.javasupport.proxy.JavaProxyReflectionObject
aref, aset, buildRubyArray, buildRubyArray, hash, is_java_proxy, java_class, java_type, length, op_equal, registerRubyMethods, same, to_s, toString
 
Methods inherited from class org.jruby.RubyObject
as, attachToObjectSpace, callInit, checkFrozen, convertToType, createObjectClass, display, dup, eql_p, eqlInternal, equal_p, equalInternal, evalUnder, evalUnder, extend, freeze, frozen_p, getNativeTypeIndex, id_deprecated, id, initialize_copy, initialize, inspect, instance_eval, instance_eval, instance_eval, instance_eval, instance_eval, instance_exec, instance_of_p, instance_variable_defined_p, instance_variable_get, instance_variable_set, instance_variables, kind_of_p, method, methods, methods, methods19, nil_p, op_eqq, op_equal, op_match, op_not_match, private_methods, private_methods19, protected_methods, protected_methods19, public_methods, public_methods19, puts, rbClone, remove_instance_variable, respond_to_p, respond_to_p, send, send, send, send, send, singleton_methods, singleton_methods19, singletonMethods, specificEval, specificEval, specificEval, specificEval, specificEval, taint, tainted_p, to_a, to_java, trust, type_deprecated, type, untaint, untrust, untrusted_p, validateInstanceVariable
 
Methods inherited from class org.jruby.RubyBasicObject
addFinalizer, anyToString, asJavaString, asString, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callSuper, checkArrayType, checkStringType, compareTo, convertToArray, convertToFloat, convertToHash, convertToInteger, convertToInteger, convertToInteger, convertToString, copyInstanceVariablesInto, copySpecialInstanceVariables, createBasicObjectClass, dataGetStruct, dataGetStructChecked, dataWrapStruct, ensureInstanceVariablesSettable, eql, fastGetInstanceVariable, fastGetInternalVariable, fastHasInstanceVariable, fastHasInternalVariable, fastSetInstanceVariable, fastSetInternalVariable, getFlag, getInstanceVariable, getInstanceVariableList, getInstanceVariableNameList, getInstanceVariables, getInternalVariable, getInternalVariables, getMetaClass, getRuntime, getSingletonClass, getSingletonClassClone, getType, getVariable, getVariableCount, getVariableList, getVariableNameList, hasInstanceVariable, hasInternalVariable, hasVariables, infectBy, isClass, isFalse, isFrozen, isImmediate, isModule, isNil, isTaint, isTrue, isUntrusted, makeMetaClass, op_not_equal, op_not, removeFinalizers, removeInstanceVariable, removeInternalVariable, respondsTo, setFlag, setFrozen, setInstanceVariable, setInternalVariable, setMetaClass, setTaint, setUntrusted, setVariable, syncVariables, taint, testFrozen, testFrozen, toJava, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableGetSize, variableTableRemove, variableTableStore, variableTableSync
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

equals

public boolean equals(java.lang.Object other)
Description copied from class: RubyObject
This method is just a wrapper around the Ruby "==" method, provided so that RubyObjects can be used as keys in the Java HashMap object underlying RubyHash.

Overrides:
equals in class JavaProxyReflectionObject

hashCode

public int hashCode()
Description copied from class: RubyObject
Override the Object#hashCode method to make sure that the Ruby hash is actually used as the hashcode for Ruby objects. If the Ruby "hash" method doesn't return a number, the Object#hashCode implementation will be used instead.

Overrides:
hashCode in class JavaProxyReflectionObject

getValue

public java.lang.Object getValue()

getProxyClass

public static JavaProxyClass getProxyClass(Ruby runtime,
                                           java.lang.Class superClass,
                                           java.lang.Class[] interfaces,
                                           java.util.Set names)
                                    throws java.lang.reflect.InvocationTargetException
Throws:
java.lang.reflect.InvocationTargetException

getProxyClass

public static JavaProxyClass getProxyClass(Ruby runtime,
                                           java.lang.Class superClass,
                                           java.lang.Class[] interfaces)
                                    throws java.lang.reflect.InvocationTargetException
Throws:
java.lang.reflect.InvocationTargetException

newProxyInstance

public static java.lang.Object newProxyInstance(Ruby runtime,
                                                java.lang.Class superClass,
                                                java.lang.Class[] interfaces,
                                                java.lang.Class[] constructorParameters,
                                                java.lang.Object[] constructorArgs,
                                                JavaProxyInvocationHandler handler)
                                         throws java.lang.IllegalArgumentException,
                                                java.lang.InstantiationException,
                                                java.lang.IllegalAccessException,
                                                java.lang.reflect.InvocationTargetException,
                                                java.lang.SecurityException,
                                                java.lang.NoSuchMethodException
Throws:
java.lang.IllegalArgumentException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.SecurityException
java.lang.NoSuchMethodException

getSuperclass

public java.lang.Class getSuperclass()

getInterfaces

public java.lang.Class[] getInterfaces()

getConstructors

public JavaProxyConstructor[] getConstructors()

getConstructor

public JavaProxyConstructor getConstructor(java.lang.Class[] args)
                                    throws java.lang.SecurityException,
                                           java.lang.NoSuchMethodException
Throws:
java.lang.SecurityException
java.lang.NoSuchMethodException

getMethods

public JavaProxyMethod[] getMethods()

getMethod

public JavaProxyMethod getMethod(java.lang.String name,
                                 java.lang.Class[] parameterTypes)

getJavaClass

public java.lang.Class getJavaClass()
Description copied from class: RubyBasicObject
Will return the Java interface that most closely can represent this object, when working through JAva integration translations.

Specified by:
getJavaClass in interface IRubyObject
Overrides:
getJavaClass in class RubyBasicObject
Returns:
Class

createJavaProxyClassClass

public static RubyClass createJavaProxyClassClass(Ruby runtime,
                                                  RubyModule javaModule)

get

public static RubyObject get(IRubyObject recv,
                             IRubyObject obj)

get_with_class

public static RubyObject get_with_class(IRubyObject recv,
                                        IRubyObject obj)

superclass

public RubyObject superclass()

methods

public RubyArray methods()

interfaces

public RubyArray interfaces()

constructors

public RubyArray constructors()

createJavaProxyModule

public static void createJavaProxyModule(Ruby runtime)

nameOnInspection

public java.lang.String nameOnInspection()


Copyright © 2002-2009 JRuby Team. All Rights Reserved.