dm-xml-adapter 0.584 → 0.587

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.