Sha256: ddc517077f1fb14a21788ab14cf44e6c0a4624142f2d112b860752b0dfbee300

Contents?: true

Size: 1.22 KB

Versions: 16

Compression:

Stored size: 1.22 KB

Contents

require 'java'

module JavaExtends

	def self.included(base)
    base.extend(ClassMethods)
  end

	def _ruby_object
		Java::org.jruby.javasupport.JavaUtil.convertJavaToRuby(_runtime, self)
	end

	def native
		@native
	end

	module ClassMethods

		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

	end

	private

	def native=(object)
		@native = object
	end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
droiuby-0.3.6 lib/droiuby/support/java.rb
droiuby-0.3.5 lib/droiuby/support/java.rb
droiuby-0.3.4 lib/droiuby/support/java.rb
droiuby-0.3.3 lib/droiuby/support/java.rb
droiuby-0.3.2 lib/droiuby/support/java.rb
droiuby-0.3.1 lib/droiuby/support/java.rb
droiuby-0.3.0 lib/droiuby/support/java.rb
droiuby-0.2.9 lib/droiuby/support/java.rb
droiuby-0.2.8 lib/droiuby/support/java.rb
droiuby-0.2.7 lib/droiuby/support/java.rb
droiuby-0.2.6 lib/droiuby/support/java.rb
droiuby-0.2.5 lib/droiuby/support/java.rb
droiuby-0.2.4 lib/droiuby/support/java.rb
droiuby-0.2.3 lib/droiuby/support/java.rb
droiuby-0.2.2 lib/droiuby/support/java.rb
droiuby-0.2.1 lib/droiuby/support/java.rb