Module: Kernel

Defined in:
lib/rcdk/java.rb

Instance Method Summary collapse

Instance Method Details

#jrequire(qualified_class_name) ⇒ Object

Maps the packages and class name specified by qualified_class_name to a nested set of Ruby modules. The first letter of each module name is capitalized. For example, java.util.HashMap would become Java::Util::HashMap.

The first use of jrequire will render all subsequent calls to require_jar ineffective.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rcdk/java.rb', line 65

def jrequire(qualified_class_name)
  java_class = Rjb::import(qualified_class_name)
  package_names = qualified_class_name.to_s.split('.')
  java_class_name = package_names.delete(package_names.last)
  new_module = self.class

  package_names.each do |package_name|
    module_name = package_name.capitalize

    if !new_module.const_defined?(module_name)
      new_module = new_module.const_set(module_name, Module.new)
    else
      new_module = new_module.const_get(module_name)
    end
  end

  return false if new_module.const_defined?(java_class_name)

  new_module.const_set(java_class_name, java_class)

  return true
end