Class: Cayuga::Object::Factory
Overview
Instance Attribute Summary collapse
#_constants, #_directories, #_files, #_logs_annotation_marker, #_logs_directory
Instance Method Summary
collapse
included
Instance Attribute Details
#configuration_name ⇒ Object
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
|
#constants ⇒ Object
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
|
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
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
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
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
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
|