class Embulk::JavaPlugin

Public Class Methods

classloader(dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 6
def self.classloader(dir)
  jars = Dir["#{dir}/**/*.jar"]
  urls = jars.map {|jar| java.io.File.new(File.expand_path(jar)).toURI.toURL }
  factory = Java.injector.getInstance(Java::PluginClassLoaderFactory.java_class)
  factory.create(urls, JRuby.runtime.getJRubyClassLoader())
end
new_java() click to toggle source
# File lib/embulk/java_plugin.rb, line 83
def self.new_java
  Java.injector.getInstance(plugin_java_class)
end
plugin_java_class() click to toggle source
# File lib/embulk/java_plugin.rb, line 72
def self.plugin_java_class
  self::PLUGIN_JAVA_CLASS
end
register_decoder(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 38
def self.register_decoder(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_decoder(name, java_class)
end
register_encoder(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 43
def self.register_encoder(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_encoder(name, java_class)
end
register_executor(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 53
def self.register_executor(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_executor(name, java_class)
end
register_filter(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 23
def self.register_filter(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_filter(name, java_class)
end
register_formatter(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 33
def self.register_formatter(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_formatter(name, java_class)
end
register_guess(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 48
def self.register_guess(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_guess(name, java_class)
end
register_input(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 13
def self.register_input(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)  # TODO handle class not found error
  Plugin.register_java_input(name, java_class)
end
register_output(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 18
def self.register_output(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_output(name, java_class)
end
register_parser(name, class_fqdn, jar_dir) click to toggle source
# File lib/embulk/java_plugin.rb, line 28
def self.register_parser(name, class_fqdn, jar_dir)
  java_class = classloader(jar_dir).loadClass(class_fqdn)
  Plugin.register_java_parser(name, java_class)
end
ruby_adapter_class(java_class, ruby_base_class, ruby_module) click to toggle source
# File lib/embulk/java_plugin.rb, line 58
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.injector.getInstance(plugin_java_class)
      end
    end
  end
end

Public Instance Methods

plugin_java_object() click to toggle source
# File lib/embulk/java_plugin.rb, line 66
def plugin_java_object
  @plugin_java_object ||= self.class.new_java
end