Module: JavaExtends::ClassMethods

Defined in:
lib/droiuby/support/java.rb

Instance Method Summary collapse

Instance Method Details

#extend_java_class(klass) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/droiuby/support/java.rb', line 19

def extend_java_class(klass)

puts "creating auto proxy for #{klass}"
klass_name = klass.to_s
wrapper_klass = Java::com.droiuby.client.core.wrappers.InvocationHandlerRubyWrapper
interface_generator = Java::com.droiuby.client.core.InterfaceGenerator
converter = Java::org.jruby.javasupport.JavaUtil

define_method(:_proxy_class) do |arg_types, arg_values|
	handler = wrapper_klass.new(_execution_bundle, _ruby_object, true)
	interface_generator.wrapperForInstance(_current_activity, klass_name, handler, arg_types, arg_values)
end

current_class = self

define_method(:invoke) do |object, method, params|
    method_name = method.getName.to_sym
    if current_class.instance_methods(false).include? method_name
    	native = object
    	send(method_name, *params)
    else
    	Java::com.google.dexmaker.stock.ProxyBuilder.callSuper(object, method, params)
  	end
  end
end