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, &block) ⇒ ComponentDef

  • args
    1. Class component_class
    2. String|Symbol component_name
    3. Proc block


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, &block)
  @constructor = block
  @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

#constructor(&block) ⇒ Object

  • args
    1. Proc|nil block
  • return
    • Proc


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

def constructor
  @constructor
end

#containerObject

Returns the value of attribute container.



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

def container
  @container
end

#destructor(&block) ⇒ Object

  • args
    1. Proc|nil block
  • return
    • Proc


63
64
65
# File 'lib/seasar/container/component-def.rb', line 63

def destructor
  @destructor
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

Instance Method Details

#add_arg_def(arg_def) ⇒ Object

  • args
    1. Seasar::Container::ArgDef arg_def
  • return
    • none


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

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


240
241
242
243
244
245
246
# File 'lib/seasar/container/component-def.rb', line 240

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


207
208
209
210
211
212
# File 'lib/seasar/container/component-def.rb', line 207

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

#destroyObject

  • args
    • none
  • return
    • none


88
89
90
91
92
# File 'lib/seasar/container/component-def.rb', line 88

def destroy
  @concreate_class = nil
  @onetime_proc = nil
  return self.get_component_deployer.destroy
end

#get_arg_def(index) ⇒ Object

  • args
    1. Integer index
  • return
    • Seasar::Container::ArgDef


124
125
126
# File 'lib/seasar/container/component-def.rb', line 124

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

#get_arg_def_sizeObject

  • args
    • none
  • return
    • Integer


134
135
136
# File 'lib/seasar/container/component-def.rb', line 134

def get_arg_def_size
  return @arg_defs.length
end

#get_arg_defsObject

  • args
    • none
  • return
    • Array


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

def get_arg_defs
  return @arg_defs
end

#get_aspect_def(index) ⇒ Object

  • args
    1. Integer index
  • return
    • Seasar::Container::AspectDef


220
221
222
# File 'lib/seasar/container/component-def.rb', line 220

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

#get_aspect_def_sizeObject

  • args
    • none
  • return
    • Integer


230
231
232
# File 'lib/seasar/container/component-def.rb', line 230

def get_aspect_def_size()
  return @aspect_defs.length
end

#get_componentObject Also known as: component

  • args
    • none
  • return
    • Object


100
101
102
# File 'lib/seasar/container/component-def.rb', line 100

def get_component
  return self.get_component_deployer.deploy
end

#get_component_deployerObject

  • args
    • none
  • return
    • Seasar::Container::Deployer::AbstractComponentDeployer


254
255
256
257
258
259
# File 'lib/seasar/container/component-def.rb', line 254

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


267
268
269
270
271
272
273
274
275
276
# File 'lib/seasar/container/component-def.rb', line 267

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


177
178
179
# File 'lib/seasar/container/component-def.rb', line 177

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

#get_property_def_sizeObject

  • args
    • none
  • return
    • Integer


197
198
199
# File 'lib/seasar/container/component-def.rb', line 197

def get_property_def_size
  return @property_defs.length
end

#get_property_defsObject

  • args
    • none
  • return
    • Array


187
188
189
# File 'lib/seasar/container/component-def.rb', line 187

def get_property_defs
  return @property_defs
end

#has_property_def(property_name) ⇒ Object

  • args
    1. Symbol property_name
  • return
    • Boolean


167
168
169
# File 'lib/seasar/container/component-def.rb', line 167

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

#initObject

  • args
    • none
  • return
    • none


76
77
78
79
80
# File 'lib/seasar/container/component-def.rb', line 76

def init
  @concreate_class = nil
  @onetime_proc = nil
  return self.get_component_deployer.init
end