xamplr 1.9.9 → 1.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 9
4
- :patch: 9
4
+ :patch: 10
5
5
  :build:
@@ -324,57 +324,58 @@ module Xampl
324
324
  end
325
325
 
326
326
  def Xampl.read_only(target_persister)
327
- #TODO -- EXCLUSIVE ACCESS TO THE PERSISTER!!!
328
- name = target_persister.name
327
+ @@xampl_lock.synchronize(:EX) do
328
+ name = target_persister.name
329
329
 
330
- if block_given? then
331
- initial_persister = @@persister
332
- Xampl.enable_persister(name, target_persister.kind, target_persister.format)
333
-
334
- rollback = true
335
- original_automatic = @@persister.automatic
336
- original_changed = @changed
337
- @changed = {}
338
- begin
339
- Xampl.auto_persistence(false)
340
- #Xampl.block_future_changes(true)
341
-
342
- yield
343
- rollback = false
344
- ensure
345
- #### Xampl.auto_persistence(original_automatic)
346
- #### #Xampl.block_future_changes(false)
347
- ####
348
- #### if 0 < @changed.size then
349
- #### puts "CHANGED COUNT: #{@changed.size}"
350
- #### raise BlockedChange.new(target_persister)
351
- #### end
352
- ####
353
- #### @changed = original_changed
354
- ####
355
- #### puts "ROLLBACK(#{__LINE__})" if rollback
356
- #### Xampl.rollback if rollback
357
- #### @@persister = initial_persister
358
-
359
- Xampl.auto_persistence(original_automatic)
360
- #Xampl.block_future_changes(false)
361
-
362
- if 0 == @changed.size then
363
- @changed = original_changed
364
-
365
- #puts "ROLLBACK(#{__LINE__})" if rollback
366
- Xampl.rollback if rollback
367
- @@persister = initial_persister
368
- else
369
- #puts "CHANGED COUNT: #{@changed.size}"
370
- @changed = original_changed
371
-
372
- #puts "ROLLBACK(#{__LINE__})" if rollback
373
- Xampl.rollback
374
-
375
- @@persister = initial_persister
376
-
377
- raise BlockedChange.new(target_persister)
330
+ if block_given? then
331
+ initial_persister = @@persister
332
+ Xampl.enable_persister(name, target_persister.kind, target_persister.format)
333
+
334
+ rollback = true
335
+ original_automatic = @@persister.automatic
336
+ original_changed = @changed
337
+ @changed = {}
338
+ begin
339
+ Xampl.auto_persistence(false)
340
+ #Xampl.block_future_changes(true)
341
+
342
+ yield
343
+ rollback = false
344
+ ensure
345
+ #### Xampl.auto_persistence(original_automatic)
346
+ #### #Xampl.block_future_changes(false)
347
+ ####
348
+ #### if 0 < @changed.size then
349
+ #### puts "CHANGED COUNT: #{@changed.size}"
350
+ #### raise BlockedChange.new(target_persister)
351
+ #### end
352
+ ####
353
+ #### @changed = original_changed
354
+ ####
355
+ #### puts "ROLLBACK(#{__LINE__})" if rollback
356
+ #### Xampl.rollback if rollback
357
+ #### @@persister = initial_persister
358
+
359
+ Xampl.auto_persistence(original_automatic)
360
+ #Xampl.block_future_changes(false)
361
+
362
+ if 0 == @changed.size then
363
+ @changed = original_changed
364
+
365
+ #puts "ROLLBACK(#{__LINE__})" if rollback
366
+ Xampl.rollback if rollback
367
+ @@persister = initial_persister
368
+ else
369
+ #puts "CHANGED COUNT: #{@changed.size}"
370
+ @changed = original_changed
371
+
372
+ #puts "ROLLBACK(#{__LINE__})" if rollback
373
+ Xampl.rollback
374
+
375
+ @@persister = initial_persister
376
+
377
+ raise BlockedChange.new(target_persister)
378
+ end
378
379
  end
379
380
  end
380
381
  end
@@ -36,12 +36,16 @@ module Xampl
36
36
  raise MixedPersisters.new(@persister, self)
37
37
  elsif Xampl.persister == @persister then
38
38
  if not @persister.syncing then
39
- Xampl.lazy_load(self)
39
+ Xampl.read_only(@persister) do
40
+ Xampl.lazy_load(self)
41
+ end
40
42
  else
41
43
  puts "LOAD NEEDED(3): BAD IDEA, but load anyway (persister: #{@persister.name})"
42
44
  puts " #{self.class.name}"
43
45
  puts " pid: #{self.get_the_index}"
44
- Xampl.lazy_load(self)
46
+ Xampl.read_only(@persister) do
47
+ Xampl.lazy_load(self)
48
+ end
45
49
  # puts "LOAD NEEDED(3): REFUSED (persister: #{@persister.name})"
46
50
  # puts " #{self.class.name}"
47
51
  # puts " pid: #{self.get_the_index}"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{xamplr}
8
- s.version = "1.9.9"
8
+ s.version = "1.9.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bob Hutchison"]
12
- s.date = %q{2010-03-14}
12
+ s.date = %q{2010-03-18}
13
13
  s.description = %q{xamplr is the ruby version of xampl.}
14
14
  s.email = %q{hutch@recursive.ca}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xamplr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.9
4
+ version: 1.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Hutchison
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-14 00:00:00 -05:00
12
+ date: 2010-03-18 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency