Class: Seasar::Container::ComponentDef

Inherits:
Object
  • Object
show all
Defined in:
lib/seasar/container/component-def.rb

Direct Known Subclasses

OuterComponentDef, SimpleComponentDef

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(component_class, component_name = nil, &procedure) ⇒ ComponentDef

  • args

    1. Class component_class

    2. String|Symbol component_name

    3. Proc procedure



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/seasar/container/component-def.rb', line 27

def initialize(component_class, component_name = nil, &procedure)
  @procedure = procedure
  @onetime_proc = nil
  @container = nil
  @component_class = component_class
  @concreate_class = nil
  @component_name = component_name.nil? ? Seasar::Util::ClassUtil.ub_name(component_class) : component_name
  @component_deployer = nil
  @arg_defs   = []
  @property_defs = {}
  @aspect_defs   = []
  @instance_def    = Seasar::Container::Deployer::InstanceDefFactory.get_instance_def(InstanceDef::SINGLETON_NAME)
  @autobinding_def = Seasar::Container::Assembler::AutoBindingDefFactory.get_autobinding_def(AutoBindingDef::AUTO_NAME)
end

Instance Attribute Details

#autobinding_defObject

Returns the value of attribute autobinding_def.



41
42
43
# File 'lib/seasar/container/component-def.rb', line 41

def autobinding_def
  @autobinding_def
end

#component_classObject

Returns the value of attribute component_class.



41
42
43
# File 'lib/seasar/container/component-def.rb', line 41

def component_class
  @component_class
end

#component_nameObject

Returns the value of attribute component_name.



41
42
43
# File 'lib/seasar/container/component-def.rb', line 41

def component_name
  @component_name
end

#containerObject

Returns the value of attribute container.



41
42
43
# File 'lib/seasar/container/component-def.rb', line 41

def container
  @container
end

#instance_defObject

Returns the value of attribute instance_def.



41
42
43
# File 'lib/seasar/container/component-def.rb', line 41

def instance_def
  @instance_def
end

#onetime_procObject

Returns the value of attribute onetime_proc.



42
43
44
# File 'lib/seasar/container/component-def.rb', line 42

def onetime_proc
  @onetime_proc
end

#procedureObject

Returns the value of attribute procedure.



42
43
44
# File 'lib/seasar/container/component-def.rb', line 42

def procedure
  @procedure
end

Instance Method Details

#add_arg_def(arg_def) ⇒ Object

  • args

    1. Seasar::Container::ArgDef arg_def

  • return

    • none



94
95
96
97
98
99
# File 'lib/seasar/container/component-def.rb', line 94

def add_arg_def(arg_def)
  if arg_def.container.nil?
    arg_def.container = @container
  end
  @arg_defs << arg_def
end

#add_aspect_def(aspect_def) ⇒ Object

  • args

    1. Seasar::Container::AspectDef aspect_def

  • return

    • none



190
191
192
193
194
195
196
# File 'lib/seasar/container/component-def.rb', line 190

def add_aspect_def(aspect_def)
  @concreate_class = nil
  if aspect_def.container.nil?
      aspect_def.container = @container
  end
  @aspect_defs << aspect_def
end

#add_property_def(property_def) ⇒ Object

  • args

    1. Seasar::Container::PropertyDef property_def

  • return

    • none



157
158
159
160
161
162
# File 'lib/seasar/container/component-def.rb', line 157

def add_property_def(property_def)
  if property_def.container.nil?
      property_def.container = @container
  end
  @property_defs[property_def.property_name] = property_def
end

#get_arg_def(index) ⇒ Object

  • args

    1. Integer index

  • return

    • Seasar::Container::ArgDef



74
75
76
# File 'lib/seasar/container/component-def.rb', line 74

def get_arg_def(index)
  return @arg_defs[index]
end

#get_arg_def_sizeObject

  • args

    • none

  • return

    • Integer



84
85
86
# File 'lib/seasar/container/component-def.rb', line 84

def get_arg_def_size
  return @arg_defs.length
end

#get_arg_defsObject

  • args

    • none

  • return

    • Array



107
108
109
# File 'lib/seasar/container/component-def.rb', line 107

def get_arg_defs
  return @arg_defs
end

#get_aspect_def(index) ⇒ Object

  • args

    1. Integer index

  • return

    • Seasar::Container::AspectDef



170
171
172
# File 'lib/seasar/container/component-def.rb', line 170

def get_aspect_def(index)
  return @aspect_defs[index]
end

#get_aspect_def_sizeObject

  • args

    • none

  • return

    • Integer



180
181
182
# File 'lib/seasar/container/component-def.rb', line 180

def get_aspect_def_size()
  return @aspect_defs.length
end

#get_componentObject Also known as: component

  • args

    • none

  • return

    • Object



50
51
52
# File 'lib/seasar/container/component-def.rb', line 50

def get_component
  return self.get_component_deployer.deploy
end

#get_component_deployerObject

  • args

    • none

  • return

    • Seasar::Container::Deployer::AbstractComponentDeployer



204
205
206
207
208
209
# File 'lib/seasar/container/component-def.rb', line 204

def get_component_deployer
  if @component_deployer.nil?
    @component_deployer = @instance_def.create_component_deployer(self)
  end
  return @component_deployer
end

#get_concreate_classObject

  • args

    • none

  • return

    • Class



217
218
219
220
221
222
223
224
225
226
# File 'lib/seasar/container/component-def.rb', line 217

def get_concreate_class
  if @aspect_defs.length == 0
      return @component_class
  end
  if not @concreate_class.nil?
      return @concreate_class
  end
  @concreate_class = Seasar::Aop::S2AopFactory.create(@component_class, @aspect_defs.map {|aspect_def| aspect_def.aspect})
  return @concreate_class
end

#get_property_def(property_name) ⇒ Object

  • args

    1. String property_name

  • return

    • Seasar::Container::PropertyDef



127
128
129
# File 'lib/seasar/container/component-def.rb', line 127

def get_property_def(property_name)
  return @property_defs[property_name]
end

#get_property_def_sizeObject

  • args

    • none

  • return

    • Integer



147
148
149
# File 'lib/seasar/container/component-def.rb', line 147

def get_property_def_size
  return @property_defs.length
end

#get_property_defsObject

  • args

    • none

  • return

    • Array



137
138
139
# File 'lib/seasar/container/component-def.rb', line 137

def get_property_defs
  return @property_defs
end

#has_property_def(property_name) ⇒ Object

  • args

    1. Symbol property_name

  • return

    • Boolean



117
118
119
# File 'lib/seasar/container/component-def.rb', line 117

def has_property_def(property_name)
  return @property_defs.key?(property_name)
end