org.jruby.internal.runtime.methods
Class ReflectionMethodFactory

java.lang.Object
  extended by org.jruby.runtime.MethodFactory
      extended by org.jruby.internal.runtime.methods.ReflectionMethodFactory

public class ReflectionMethodFactory
extends MethodFactory

This MethodFactory uses reflection to provide method handles. Reflection is typically slower than code-generated handles, but it does provide a simple mechanism for binding in environments where code-generation isn't supported.

See Also:
org.jruby.internal.runtime.methods.MethodFactory

Nested Class Summary
 
Nested classes/interfaces inherited from class org.jruby.runtime.MethodFactory
MethodFactory.MethodDefiningCallback
 
Field Summary
 
Fields inherited from class org.jruby.runtime.MethodFactory
COMPILED_METHOD_PARAMS
 
Constructor Summary
ReflectionMethodFactory()
           
 
Method Summary
 void defineIndexedAnnotatedMethods(RubyModule implementationClass, java.lang.Class type, MethodFactory.MethodDefiningCallback callback)
          Use reflection to generate a set of method handles based on all annotated methods in the target class.
 DynamicMethod getAnnotatedMethod(RubyModule implementationClass, JavaMethodDescriptor desc)
          Use reflection to provide a method handle based on an annotated Java method.
 DynamicMethod getAnnotatedMethod(RubyModule implementationClass, java.util.List<JavaMethodDescriptor> descs)
          Use reflection to provide a method handle based on an annotated Java method.
 DynamicMethod getCompiledMethod(RubyModule implementationClass, java.lang.String methodName, Arity arity, Visibility visibility, StaticScope scope, java.lang.Object scriptObject, CallConfiguration callConfig)
          Use reflection to provide a method handle for a compiled Ruby method.
 DynamicMethod getCompiledMethodLazily(RubyModule implementationClass, java.lang.String methodName, Arity arity, Visibility visibility, StaticScope scope, java.lang.Object scriptObject, CallConfiguration callConfig)
          Use reflection to provide a method handle for a compiled Ruby method.
 
Methods inherited from class org.jruby.runtime.MethodFactory
createFactory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReflectionMethodFactory

public ReflectionMethodFactory()
Method Detail

getCompiledMethodLazily

public DynamicMethod getCompiledMethodLazily(RubyModule implementationClass,
                                             java.lang.String methodName,
                                             Arity arity,
                                             Visibility visibility,
                                             StaticScope scope,
                                             java.lang.Object scriptObject,
                                             CallConfiguration callConfig)
Use reflection to provide a method handle for a compiled Ruby method.

Specified by:
getCompiledMethodLazily in class MethodFactory
Parameters:
implementationClass - The class to which the method will be bound.
methodName - The name of the method
arity - The Arity of the method
visibility - The method's visibility on the target type.
scope - The methods static scoping information.
scriptObject - An instace of the target compiled method class.
callConfig - The call configuration to use for this method.
Returns:
A new method handle for the target compiled method.
See Also:
org.jruby.internal.runtime.methods.MethodFactory#getCompiledMethod

getCompiledMethod

public DynamicMethod getCompiledMethod(RubyModule implementationClass,
                                       java.lang.String methodName,
                                       Arity arity,
                                       Visibility visibility,
                                       StaticScope scope,
                                       java.lang.Object scriptObject,
                                       CallConfiguration callConfig)
Use reflection to provide a method handle for a compiled Ruby method.

Specified by:
getCompiledMethod in class MethodFactory
Parameters:
implementationClass - The class to which the method will be bound.
methodName - The name of the method
arity - The Arity of the method
visibility - The method's visibility on the target type.
scope - The methods static scoping information.
scriptObject - An instace of the target compiled method class.
callConfig - The call configuration to use for this method.
Returns:
A new method handle for the target compiled method.
See Also:
org.jruby.internal.runtime.methods.MethodFactory#getCompiledMethod

getAnnotatedMethod

public DynamicMethod getAnnotatedMethod(RubyModule implementationClass,
                                        JavaMethodDescriptor desc)
Use reflection to provide a method handle based on an annotated Java method.

Specified by:
getAnnotatedMethod in class MethodFactory
Parameters:
implementationClass - The target class or module on which the method will be bound.
desc - A JavaMethodDescriptor describing the target method
Returns:
A method handle for the target object.
See Also:
org.jruby.internal.runtime.methods.MethodFactory#getAnnotatedMethod

getAnnotatedMethod

public DynamicMethod getAnnotatedMethod(RubyModule implementationClass,
                                        java.util.List<JavaMethodDescriptor> descs)
Use reflection to provide a method handle based on an annotated Java method.

Specified by:
getAnnotatedMethod in class MethodFactory
Parameters:
implementationClass - The target class or module on which the method will be bound.
Returns:
A method handle for the target object.
See Also:
org.jruby.internal.runtime.methods.MethodFactory#getAnnotatedMethod

defineIndexedAnnotatedMethods

public void defineIndexedAnnotatedMethods(RubyModule implementationClass,
                                          java.lang.Class type,
                                          MethodFactory.MethodDefiningCallback callback)
Use reflection to generate a set of method handles based on all annotated methods in the target class.

Specified by:
defineIndexedAnnotatedMethods in class MethodFactory
Parameters:
implementationClass - The target class or module on which the method will be bound.
type - The Java class containined annotated methods to be bound.
callback - A callback provided by the caller which handles binding each method.
See Also:
org.jruby.internal.runtime.methods.MethodFactory#defineIndexedAnnotatedMethods


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