Method: Jinx::Importer#resolve_class

Defined in:
lib/jinx/importer.rb

#resolve_class(name, package = nil) ⇒ Class? (private)

Returns the Resource class imported into this module, or nil if the class cannot be resolved.

Parameters:

  • name (String)

    the demodulized class name

  • package (String) (defaults to: nil)

    the Java package, or nil for all packages

Returns:

  • (Class, nil)

    the Resource class imported into this module, or nil if the class cannot be resolved



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/jinx/importer.rb', line 209

def resolve_class(name, package=nil)
  if const_defined?(name) then
    return const_get(name)
  end
  if package.nil? then
    return @packages.detect_value { |pkg| resolve_class(name, pkg) }
  end
  # Append the class name to the package to make the Java class name.
  full_name = "#{package}.#{name}"
  # If the class is already imported, then java_import returns nil. In that case,
  # evaluate the Java class.
  begin
    java_import(full_name)
  rescue
    module_eval("Java::#{full_name}") rescue nil
  end
end