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