Class: Jruby::Coercion::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/jruby-coercion.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.converter_registryObject (readonly)

Returns the value of attribute converter_registry.



39
40
41
# File 'lib/jruby-coercion.rb', line 39

def converter_registry
  @converter_registry
end

Class Method Details

.register_converter(ruby_type, java_type, callable = nil, &blk) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/jruby-coercion.rb', line 44

def self.register_converter(ruby_type, java_type, callable = nil, &blk)
  Thread.exclusive do 
    callable ||= blk
    ruby_type_converter = (@converter_registry[ruby_type] ||= 
                           ::Java::JavaUtilConcurrent::ConcurrentHashMap.new)

    ruby_type_converter[java_type] = callable
    # Register alternative type java_class/ruby_class
    ruby_type_converter[::Jruby::Coercion.alternative_class(java_type)] = callable 

    @converter_registry[ruby_type] = ruby_type_converter
  end
end

.registry_converts_class?(ruby_type) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
61
62
63
64
# File 'lib/jruby-coercion.rb', line 58

def self.registry_converts_class?(ruby_type)
  if !ruby_type.nil? && (class_level = converter_registry[ruby_type])
    return class_level
  else
    false
  end
end

.registry_converts_class_and_to?(ruby_type, java_type) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
74
75
# File 'lib/jruby-coercion.rb', line 66

def self.registry_converts_class_and_to?(ruby_type, java_type)
  if (!java_type.nil? && 
      (class_level = registry_converts_class?(ruby_type)) &&
      (converter = class_level[java_type]))

    return converter
  else
    false
  end
end