module Embulk
def set(ruby_object)
def set(ruby_object) # Using |java_send| so that it calls Java's correct overloaded |set| method, not Ruby's itself. if ruby_object.nil? self.java_send(:setNull, []) elsif ruby_object == true || ruby_object == false self.java_send(:set, [::Java::boolean], ruby_object.to_java(:boolean)) elsif ruby_object.kind_of?(Integer) self.java_send(:set, [::Java::long], ruby_object.to_java(:long)) elsif ruby_object.kind_of?(Float) self.java_send(:set, [::Java::double], ruby_object.to_java(:double)) elsif ruby_object.kind_of?(String) self.java_send(:set, [::Java::java.lang.String], ruby_object.to_java(::Java::java.lang.String)) elsif ruby_object.kind_of?(Time) self.java_send(:set, [::Java::org.embulk.spi.time.Timestamp], ::Java::org.embulk.spi.time.Timestamp.ofEpochSecond(ruby_object.to_i, ruby_object.nsec)) else self.java_send(:set, [::Java::org.msgpack.value.Value], ::Java::org.msgpack.core.MessagePack.newDefaultUnpacker(ruby_object.to_msgpack.to_java_bytes).unpackValue()) end end