class Embulk::PluginManager

def register_java_plugin(category, type, klass, iface_map, message=nil)

def register_java_plugin(category, type, klass, iface_map, message=nil)
  found = iface_map.find do |iface_name,ruby_base_class|
    iface = JRuby.runtime.getJRubyClassLoader.load_class(iface_name)
    iface.isAssignableFrom(klass)
  end
  unless found
    message ||= "Java plugin #{klass} must implement #{iface_map.keys.join(' or ')}"
    raise message
  end
  adapted = found.last.from_java(klass)
  @registries[category].register(type, adapted)
end