class Embulk::JavaPlugin
def self.ruby_adapter_class(java_class, ruby_base_class, ruby_module)
def self.ruby_adapter_class(java_class, ruby_base_class, ruby_module) Class.new(ruby_base_class) do const_set(:PLUGIN_JAVA_CLASS, java_class) include ruby_module extend ruby_module::ClassMethods unless method_defined?(:plugin_java_object) def plugin_java_object @plugin_java_object ||= self.class.new_java end end unless (class<<self;self;end).method_defined?(:plugin_java_class) def self.plugin_java_class self::PLUGIN_JAVA_CLASS end end # TODO ruby_base_class already implements new_java. So # this line returns always true: #unless (class<<self;self;end).method_defined?(:new_java) # but this line could return false unexpectedly if # ruby_module::ClassMethods includes other modules. unless ruby_module::ClassMethods.method_defined?(:new_java) def self.new_java Java::org.embulk.plugin.PluginManager.newPluginInstance(plugin_java_class, Embulk::Java::EmbulkSystemProperties) end end end end