dm-xml-adapter 0.584 → 0.587

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.
@@ -7,8 +7,7 @@ require 'pp'
7
7
  gem 'libxml-ruby', '>= 0.8.3'
8
8
  require 'xml'
9
9
  require 'tempfile'
10
- require 'simple_memoize'
11
- require 'log4r'
10
+ require 'logger'
12
11
 
13
12
  # http://redcorundum.blogspot.com/2006/05/kernelqualifiedconstget.html
14
13
  module Kernel
@@ -56,7 +55,6 @@ module DataMapper::Adapters
56
55
 
57
56
  def put(classname, id, object)
58
57
  # check to see if we have a classname entry
59
- #puts "putting a cache entry of id: #{id}"
60
58
  if (@classes[classname] == nil)
61
59
  @classes[classname] = Hash.new
62
60
  end
@@ -73,25 +71,33 @@ module DataMapper::Adapters
73
71
  end
74
72
 
75
73
  def get(classname, id)
76
- #puts "getting a cache entry for id: #{id}"
77
74
  hash = @classes[classname]
78
75
  return hash[id]
79
76
  end
80
77
  end
81
78
 
82
79
  class XmlAdapter < AbstractAdapter
83
- def self.threads=(count)
84
- @@threadcount = count
80
+
81
+ def loglevel=(loglevel)
82
+ @options[:loglevel] = loglevel
83
+ @logger.level = loglevel
84
+ end
85
+
86
+ def logger=(logger)
87
+ @options[:logger] = logger
88
+ @logger = logger
85
89
  end
86
90
 
87
91
  def initialize(name, options)
88
92
  super
89
93
 
90
- @@threadcount = 1
91
- @options = Hash.new
92
- @options[:directory] = options[:directory]
94
+ @options = options
93
95
  @options[:directory] ||= './db'
94
-
96
+ @options[:loglevel] ||= Logger::FATAL
97
+ @options[:logger] ||= Logger.new(STDERR)
98
+ @logger = @options[:logger]
99
+ @logger.level = @options[:loglevel]
100
+ @logger.debug("DM-XML-Adapter Initialized!")
95
101
  @last_used_id = Hash.new
96
102
 
97
103
  @cache = XmlAdapterCache.new
@@ -100,10 +106,12 @@ module DataMapper::Adapters
100
106
 
101
107
  def destroy_model_storage(model)
102
108
  FileUtils.rm_rf(classname_to_dir(model.to_s))
109
+ @logger.debug("Removing model storage for #{model}")
103
110
  end
104
111
 
105
112
  def create_model_storage(model)
106
113
  FileUtils.mkdir_p(classname_to_dir(model.to_s))
114
+ @logger.debug("Creating model storage for: #{model}")
107
115
  end
108
116
 
109
117
  def create(resources)
@@ -111,7 +119,6 @@ module DataMapper::Adapters
111
119
  resources.each do |resource|
112
120
  id = find_free_id_for(resources.first.class.to_s)
113
121
  # find name of key attribute
114
- #puts "we are creating a new resource with id: #{id}"
115
122
  resource.attributes[key] = id
116
123
  resource.instance_variable_set("@" + key.to_s, id)
117
124
  save(resource)
@@ -124,6 +131,7 @@ module DataMapper::Adapters
124
131
  class_name = result.model.to_s
125
132
  @last_used_id[class_name] = key
126
133
  xml_destroy(result)
134
+ @logger.debug("Destroying #{result}")
127
135
  # also remove from cache
128
136
  @cache.delete(class_name, key)
129
137
  # also remove from mtimes
@@ -142,6 +150,7 @@ module DataMapper::Adapters
142
150
  # first member is Property object
143
151
  # second member is the value
144
152
  obj.instance_variable_set("@" + attrib[0].name.to_s, attrib[1])
153
+ @logger.debug("Updating instance variable #{attrib[0].name.to_s} to #{attrib[1]}")
145
154
  end
146
155
  save(obj)
147
156
  end
@@ -168,6 +177,7 @@ module DataMapper::Adapters
168
177
 
169
178
  def get_all(model)
170
179
  model_name = model.to_s
180
+ @logger.debug("Getting all for model #{model_name}")
171
181
  directory = classname_to_dir(model_name)
172
182
  if ! File.exists?(directory)
173
183
  return []
@@ -250,9 +260,7 @@ module DataMapper::Adapters
250
260
  # if there are no entries in the directory
251
261
  # or the directory doesn't exist
252
262
  # we need to create it...
253
- #puts "trying to find a free id for #{class_name}"
254
263
  if ! File.exists?(classname_to_dir(class_name))
255
- #puts "the directory doesn't exist"
256
264
  # default ID
257
265
  return 1
258
266
  end
@@ -263,13 +271,10 @@ module DataMapper::Adapters
263
271
  id = @last_used_id[class_name] || 1
264
272
  while true do
265
273
  filename = File.join(directory.path, id.to_s + ".xml")
266
- #puts "checking for the existence of #{filename}"
267
274
  if ! File.exists?(filename)
268
275
  @last_used_id[class_name] = id
269
- #puts "found free id: #{id}"
270
276
  return id
271
277
  end
272
- #puts "the file existed..."
273
278
  id += 1
274
279
  end
275
280
  end
@@ -278,7 +283,6 @@ module DataMapper::Adapters
278
283
  # since we're saving, purge the cache
279
284
  resource_class = resource.class.to_s
280
285
  resource_key = resource.key.first
281
- #puts "the key of the oject we are saving: #{resource_key}"
282
286
  @cache.delete(resource_class, resource_key)
283
287
  @cache.delete_mtime(class_name_to_file(resource_class, resource_key))
284
288
 
@@ -307,14 +311,12 @@ module DataMapper::Adapters
307
311
  end
308
312
  end
309
313
 
310
- #puts "the key is now: #{resource_key}"
311
314
  xmlfile = File.new(class_name_to_file(resource_class, resource_key), "w")
312
- #puts "saving to #{xmlfile.path}"
313
315
  tempfile = Tempfile.new("dm-xml-adapter", Dir.tmpdir())
314
316
  tempfile.puts out_string
315
- #puts "the content is: #{out_string}"
316
317
  tempfile.close
317
318
  FileUtils.mv(tempfile.path,xmlfile.path)
319
+ @logger.debug("Saved to: #{xmlfile.path}")
318
320
  return xmlfile
319
321
 
320
322
  end
@@ -328,10 +330,6 @@ module DataMapper::Adapters
328
330
  return File.join(classname_to_dir(class_name), id.to_s + ".xml")
329
331
  end
330
332
 
331
- #memoize(:file_to_id)
332
- #memoize(:classname_to_dir)
333
- #memoize(:class_name_to_file)
334
-
335
333
  end
336
334
  end
337
335
 
@@ -4,8 +4,6 @@ require 'pathname'
4
4
  require 'dm-migrations'
5
5
  require Pathname(__FILE__).dirname.expand_path + 'spec_helper'
6
6
 
7
- DataMapper::Adapters::XmlAdapter.threads = 2
8
-
9
7
  describe DataMapper::Adapters::XmlAdapter do
10
8
  before(:each) do
11
9
  @adapter = DataMapper.setup(:default, {:adapter => 'xml', :directory => 'db'})
@@ -174,6 +172,20 @@ describe DataMapper::Adapters::XmlAdapter do
174
172
  end
175
173
  end
176
174
 
175
+ describe "logging support" do
176
+ it "should work with logging" do
177
+ @adapter.loglevel = Logger::DEBUG
178
+ @adapter.logger = Logger.new("/dev/null")
179
+ XMLTest::User.create(:name => "contentking", :content => "cool")
180
+ XMLTest::User.all.size.should == 1
181
+ DataMapper.repository.adapter.loglevel = Logger::DEBUG
182
+ DataMapper.repository.adapter.logger = Logger.new(STDOUT)
183
+ XMLTest::User.create(:name => "contentking", :content => "cool")
184
+ XMLTest::User.all.size.should == 2
185
+ end
186
+
187
+ end
188
+
177
189
  end
178
190
 
179
191
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-xml-adapter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1179
5
- prerelease: false
4
+ hash: 1181
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 584
9
- version: "0.584"
8
+ - 587
9
+ version: "0.587"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joshua Harding
@@ -14,8 +14,7 @@ autorequire: dm-xml-adapter
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-18 00:00:00 -04:00
18
- default_executable:
17
+ date: 2012-02-12 00:00:00 Z
19
18
  dependencies:
20
19
  - !ruby/object:Gem::Dependency
21
20
  name: libxml-ruby
@@ -46,7 +45,7 @@ dependencies:
46
45
  type: :runtime
47
46
  version_requirements: *id002
48
47
  - !ruby/object:Gem::Dependency
49
- name: simple_memoize
48
+ name: dm-core
50
49
  prerelease: false
51
50
  requirement: &id003 !ruby/object:Gem::Requirement
52
51
  none: false
@@ -60,7 +59,7 @@ dependencies:
60
59
  type: :runtime
61
60
  version_requirements: *id003
62
61
  - !ruby/object:Gem::Dependency
63
- name: log4r
62
+ name: dm-migrations
64
63
  prerelease: false
65
64
  requirement: &id004 !ruby/object:Gem::Requirement
66
65
  none: false
@@ -73,34 +72,6 @@ dependencies:
73
72
  version: "0"
74
73
  type: :runtime
75
74
  version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: dm-core
78
- prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
80
- none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
88
- type: :runtime
89
- version_requirements: *id005
90
- - !ruby/object:Gem::Dependency
91
- name: dm-migrations
92
- prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
102
- type: :runtime
103
- version_requirements: *id006
104
75
  description:
105
76
  email: josh@statewidesoftware.com
106
77
  executables: []
@@ -115,7 +86,6 @@ files:
115
86
  - spec/dm-xml-adapter_spec.rb
116
87
  - spec/spec_helper.rb
117
88
  - README
118
- has_rdoc: true
119
89
  homepage:
120
90
  licenses: []
121
91
 
@@ -145,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
115
  requirements: []
146
116
 
147
117
  rubyforge_project:
148
- rubygems_version: 1.3.7
118
+ rubygems_version: 1.8.6
149
119
  signing_key:
150
120
  specification_version: 3
151
121
  summary: a XML adapter for DataMapper. this adapter allows you to use DataMapper with XML files as a backing store.