Class: Cayuga::Object::Factory

Inherits:
Object
  • Object
show all
Includes:
FactoryHelper, Tools::Loggable
Defined in:
lib/cayuga/object/factory.rb

Overview

Cayuga Object Factory

Instance Attribute Summary collapse

Attributes included from FactoryHelper

#_constants, #_directories, #_files, #_logs_annotation_marker, #_logs_directory

Instance Method Summary collapse

Methods included from Tools::Loggable

included

Instance Attribute Details

#configuration_nameObject (readonly)

Returns the value of attribute configuration_name.



17
18
19
# File 'lib/cayuga/object/factory.rb', line 17

def configuration_name
  @configuration_name
end

Instance Method Details

#[](klass, name = nil) ⇒ Object



73
74
75
76
77
78
79
80
# File 'lib/cayuga/object/factory.rb', line 73

def [](klass, name = nil)
  key = klass.symbolize
  value = lookup_registered_instances(key, name)
  if value.nil?
    value = create_instance(type(key), klass.classify, name)
  end
  value
end

#constantsObject



23
24
25
# File 'lib/cayuga/object/factory.rb', line 23

def constants
  @constants ||= self[Cayuga::Object::Constants]
end

#deregister_class(klass) ⇒ Object



47
48
49
# File 'lib/cayuga/object/factory.rb', line 47

def deregister_class(klass)
  types.delete(klass.symbolize)
end

#loggerObject



19
20
21
# File 'lib/cayuga/object/factory.rb', line 19

def logger
  @logger ||= self[Cayuga::Object::Logger]
end

#register(instance, klass, name = nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/cayuga/object/factory.rb', line 55

def register(instance, klass, name = nil)
  key = klass.symbolize
  type = type(key)
  generate_registration_errors(klass, name, key, type)
  case type
    when :named
      value = instances[key]
      if value.nil?
        value = {}
        instances[key] = value
      end
      value[name] = instance
    else
      instances[key] = instance
  end
  instance
end

#register_class(klass, type) ⇒ Object

Raises:

  • (ArgumentError)


39
40
41
42
43
44
45
# File 'lib/cayuga/object/factory.rb', line 39

def register_class(klass, type)
  message = "'#{type}' must be object, singleton or named"
  ok = %i[object singleton named].include? type.symbolize
  raise ArgumentError, message unless ok

  register_classes([klass], type)
end

#registered?(klass, name = nil) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/cayuga/object/factory.rb', line 51

def registered?(klass, name = nil)
  lookup_registered_instances(klass.symbolize, name) != nil
end

#registered_class?(klass) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/cayuga/object/factory.rb', line 35

def registered_class?(klass)
  types.key?(klass.symbolize)
end

#release(klass, name = nil) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/cayuga/object/factory.rb', line 82

def release(klass, name = nil)
  key = klass.symbolize
  return unless registered?(key, name)

  type = type(key)
  case type
    when :singleton
      instances.delete(key)
    when :named
      value = instances[key]
      if value
        value.delete(name)
      end
    else
      raise "bad type '#{type}'"
  end
end

#supported?(klass) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/cayuga/object/factory.rb', line 27

def supported?(klass)
  types.key?(klass.symbolize)
end

#type(klass) ⇒ Object



31
32
33
# File 'lib/cayuga/object/factory.rb', line 31

def type(klass)
  types[klass.symbolize]
end