s2container 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,29 +1,36 @@
1
-
2
- 2009-07-04 s2container-0.9.2
3
- * fix: manual-constructor-assembler.
4
- * fix: init method of S2ApplicationContext class.
5
- * fix: init method of S2ApplicationContext class.
6
- * modify: The instance method of S2ApplicationContext (use thread local).
7
- * modify: The s2component method. (for define instance class method).
8
-
9
- 2009-06-20 s2container-0.9.1
10
-
11
- * modify: for JRuby.
12
- * info: s2container-0.9.1 release.
13
-
14
- 2009-06-04 s2container-0.9.1
15
-
16
- * add: add Seasar::DBI::TxInterceptor.
17
-
18
- 2009-05-06 s2container-0.9.1
19
-
20
- * fix: s2aspect method.
21
-
22
- 2009-04-26 s2container-0.9.0
23
-
24
- * add: destroy method to Seasar::Container::S2Container, Seasar::Container::ComponentDef.
25
- * info: s2container-0.9.0 release.
26
-
27
- 2009-04-15 s2container-0.8.0
28
-
29
- * info: s2container-0.8.0 first release from rubyforge.
1
+
2
+ 2009-11-13 s2container-0.9.3
3
+ * modify: for JRuby-1.4.0
4
+
5
+ 2009-09-23 s2container-0.9.3
6
+ * add: S2ApplicationContext.destroy_singleton_containers method.
7
+
8
+ 2009-07-04 s2container-0.9.2
9
+ * fix: manual-constructor-assembler.
10
+ * fix: init method of S2ApplicationContext class.
11
+ * fix: init method of S2ApplicationContext class.
12
+ * modify: The instance method of S2ApplicationContext (use thread local).
13
+ * modify: The s2component method. (for define instance class method).
14
+ * info: s2container-0.9.2 release.
15
+
16
+ 2009-06-20 s2container-0.9.1
17
+
18
+ * modify: for JRuby.
19
+ * info: s2container-0.9.1 release.
20
+
21
+ 2009-06-04 s2container-0.9.1
22
+
23
+ * add: add Seasar::DBI::TxInterceptor.
24
+
25
+ 2009-05-06 s2container-0.9.1
26
+
27
+ * fix: s2aspect method.
28
+
29
+ 2009-04-26 s2container-0.9.0
30
+
31
+ * add: destroy method to Seasar::Container::S2Container, Seasar::Container::ComponentDef.
32
+ * info: s2container-0.9.0 release.
33
+
34
+ 2009-04-15 s2container-0.8.0
35
+
36
+ * info: s2container-0.8.0 first release from rubyforge.
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- RUBY_S2CONTAINER_VERSION = '0.9.2'
1
+ RUBY_S2CONTAINER_VERSION = '0.9.3'
2
2
 
3
3
  require 'rubygems'
4
4
  require 'rake'
@@ -18,7 +18,7 @@ end
18
18
 
19
19
  spec = Gem::Specification.new do |s|
20
20
  s.name = 's2container'
21
- s.date = '2009-07-04'
21
+ s.date = '2009-11-13'
22
22
  s.version = RUBY_S2CONTAINER_VERSION
23
23
  s.authors = ['klove']
24
24
  s.email = 'klovelion@gmail.com'
@@ -2,13 +2,13 @@ $LOAD_PATH.unshift(File::expand_path(File::dirname(__FILE__)) + '/../../../lib')
2
2
  require 'rubygems'
3
3
  require 's2container'
4
4
 
5
- s2comp(:class => Seasar::DBI::DBIInterceptor, :name => :dbi_interceptor)
6
- s2comp(:class => Seasar::DBI::TxInterceptor, :name => :tx_interceptor)
5
+ s2comp(:class => Seasar::DBI::DBIInterceptor)
6
+ s2comp(:class => Seasar::DBI::TxInterceptor)
7
7
  s2comp(:class => DBI::DatabaseHandle, :name => :dbh, :autobinding => :none) { DBI.connect("dbi:SQLite3::memory:") }
8
8
 
9
9
  class Dao
10
10
  s2comp
11
- s2aspect :interceptor => :dbi_interceptor
11
+ s2aspect :interceptor => :dbiinterceptor
12
12
  def create_table; 'create table sample(id integer primary key, name text);' end
13
13
  def find_all; 'select * from sample;' end
14
14
  def insert_name(val); 'insert into sample(name) values(?);' end
@@ -21,10 +21,14 @@ module Seasar
21
21
  autoload :Aspect, 'seasar/aop/aspect'
22
22
  autoload :MethodInvocation, 'seasar/aop/method-invocation'
23
23
  autoload :Pointcut, 'seasar/aop/pointcut'
24
- if '1.8.6' < RUBY_VERSION
25
- autoload :S2AopFactory, 'seasar/aop/s2aop-factory'
26
- else
24
+ if defined? JRUBY_VERSION
27
25
  autoload :S2AopFactory, 'seasar/aop/s2aop-factory186'
26
+ else
27
+ if '1.8.6' < RUBY_VERSION
28
+ autoload :S2AopFactory, 'seasar/aop/s2aop-factory'
29
+ else
30
+ autoload :S2AopFactory, 'seasar/aop/s2aop-factory186'
31
+ end
28
32
  end
29
33
  module Interceptor
30
34
  autoload :TraceInterceptor, 'seasar/aop/interceptor/trace-interceptor'
@@ -46,8 +46,8 @@ module Seasar
46
46
  if procedure.nil?
47
47
  args = @component_def.get_arg_defs.map {|arg_def| arg_def.value}
48
48
  return @component_def.get_concreate_class.new(*args)
49
- elsif @component_def.component_class == Proc
50
- return procedure
49
+ # elsif @component_def.component_class == Proc
50
+ # return procedure
51
51
  else
52
52
  component = procedure.call(@component_def)
53
53
  if component.is_a?(@component_def.component_class)
@@ -253,6 +253,22 @@ module Seasar
253
253
  end
254
254
  alias get_singleton_container create_singleton_container
255
255
 
256
+ #
257
+ # - args
258
+ # 1. Array|nil <em>namespaces</em> String namespaces
259
+ # - return
260
+ # - nil
261
+ #
262
+ def destroy_singleton_containers(namespaces = nil)
263
+ namespaces = [namespaces] if namespaces.is_a?(String)
264
+ key = namespaces.sort unless namespaces.nil?
265
+ if namespaces.nil?
266
+ @singletons.each {|key, container| container.destroy}
267
+ elsif @singletons.key?(key)
268
+ @singletons[key].destroy
269
+ end
270
+ end
271
+
256
272
  #
257
273
  # - args
258
274
  # 1. Array <em>namespaces</em> String namespaces
@@ -177,27 +177,28 @@ module Seasar
177
177
  # - args
178
178
  # 1. String|Symbol <em>key</em>
179
179
  # 2. Boolean <em>search_parent</em>
180
- # 3. Array <em>ignore_children</em>
180
+ # 3. Array <em>searched_as_parent</em>
181
181
  # - return
182
182
  # - Seasar::Container::ComponentDef
183
183
  #
184
- def get_component_def_internal(key, search_parent = true, ignore_children = [])
184
+ def get_component_def_internal(key, search_parent = true, searched_as_parent = [], searched_as_child = [])
185
185
  if @component_def_map.key?(key)
186
186
  return @component_def_map[key]
187
187
  elsif key.is_a?(String) && key.match(/\./)
188
188
  component_def = self.get_component_def_with_namespace(key)
189
189
  return component_def unless component_def.nil?
190
190
  else
191
- component_def = self.get_component_def_from_children(key, ignore_children)
191
+ component_def = self.get_component_def_from_children(key, searched_as_parent, searched_as_child)
192
192
  return component_def unless component_def.nil?
193
193
  end
194
194
  return nil unless search_parent
195
195
 
196
- ignore_children << self
196
+ searched_as_parent << self
197
197
  return nil if @parents.size == 0
198
198
  @parents.each {|parent|
199
- next if parent.parents.size == 0 && ignore_children.member?(parent)
200
- component_def = parent.get_component_def_internal(key, true, ignore_children)
199
+ next if searched_as_parent.member?(parent)
200
+ #s2logger.debug(self.class.name){'search parent container : ' + parent.namespace.to_s}
201
+ component_def = parent.get_component_def_internal(key, true, searched_as_parent, searched_as_child)
201
202
  return component_def unless component_def.nil?
202
203
  }
203
204
  return nil
@@ -227,11 +228,14 @@ module Seasar
227
228
  # - return
228
229
  # - Seasar::Container::ComponentDef
229
230
  #
230
- def get_component_def_from_children(key, ignore_children = [])
231
+ def get_component_def_from_children(key, searched_as_parent = [], searched_as_child = [])
231
232
  @children.each {|child_container|
232
- next if ignore_children.member?(child_container)
233
- component_def = child_container.get_component_def_internal(key, false)
233
+ next if searched_as_parent.member?(child_container)
234
+ next if searched_as_child.member?(child_container)
235
+ #s2logger.debug(self.class.name){'search child container : ' + child_container.namespace.to_s}
236
+ component_def = child_container.get_component_def_internal(key, false, searched_as_parent, searched_as_child)
234
237
  return component_def unless component_def.nil?
238
+ searched_as_child << child_container
235
239
  }
236
240
  return nil
237
241
  end
@@ -16,7 +16,7 @@ module Seasar
16
16
  end
17
17
 
18
18
  def test_procedure_arg
19
- return if RUBY_VERSION < '1.8.7'
19
+ return if RUBY_VERSION < '1.8.7' || defined? JRUBY_VERSION
20
20
  aspect_def = Seasar::Container::AspectDef.new(/^hoge$/) {|invocation|
21
21
  result = invocation.proceed
22
22
  next result * 10
@@ -52,7 +52,7 @@ module Seasar
52
52
 
53
53
  def test_proc_block
54
54
  cd = Seasar::Container::ComponentDef.new(Proc, "b") {
55
- next A.new
55
+ proc { A.new }
56
56
  }
57
57
  component = cd.get_component
58
58
  assert(component.instance_of?(Proc))
@@ -192,6 +192,16 @@ module Seasar
192
192
  assert(c1 == c2)
193
193
  end
194
194
 
195
+ def test_destroy_singleton_containers
196
+ s2app.init
197
+ c1 = s2app.create_singleton_container(%w[a.b a.c])
198
+ s2app.destroy_singleton_containers
199
+
200
+ s2app.init
201
+ c1 = s2app.create_singleton_container(%w[a.b a.c])
202
+ s2app.destroy_singleton_containers(%w[a.b a.c])
203
+ end
204
+
195
205
  def test_snapshot
196
206
  s2app.init
197
207
  assert(!s2app.snapshot?)
@@ -212,12 +212,15 @@ module Seasar
212
212
  assert(g.has_component_def(C))
213
213
 
214
214
  assert_equal(x, f.root)
215
+ #puts '-----------------------'
215
216
  assert(g.has_component_def(X))
217
+ #puts '-----------------------'
216
218
  assert(!g.has_component_def('qqq'))
217
219
  assert(g.has_component_def('a.b.d.g'))
218
220
  assert(g.has_component_def('a.c.e.g'))
219
221
  assert(g.has_component_def('x.y.f.g'))
220
222
  assert(g.has_component_def('x.y.f.g.Gg'))
223
+ assert(b.has_component_def(F))
221
224
  end
222
225
 
223
226
  def test_init_destroy
@@ -19,7 +19,7 @@ module Seasar
19
19
 
20
20
  def test_jlogger
21
21
  return unless defined? JRUBY_VERSION
22
- require 'lib/seasar/log/jlogger.rb'
22
+ require 'seasar/log/jlogger.rb'
23
23
  require "java"
24
24
  import 'java.util.logging.Level'
25
25
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s2container
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - klove
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-04 00:00:00 +09:00
12
+ date: 2009-11-13 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15