active-fedora 4.0.0.rc13 → 4.0.0.rc14

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active-fedora (4.0.0.rc13)
4
+ active-fedora (4.0.0.rc14)
5
5
  activeresource (>= 3.0.0)
6
6
  activesupport (>= 3.0.0)
7
7
  equivalent-xml
data/History.txt CHANGED
@@ -1,4 +1,4 @@
1
- 4.0.0.rc13
1
+ 4.0.0.rc14
2
2
  Removed deprecations
3
3
  * allowing :fedora level in fedora.yml
4
4
  * automatic includes of Relationships and FileMethods is removed
@@ -8,7 +8,7 @@ Improved loading from solr
8
8
  RDF datastreams
9
9
  Replaced solr-ruby with rsolr. Note: remove any calls to .hits
10
10
  load_instance is now deprecated, replaced with find
11
- Find always casts to the appropriate object.
11
+ Find and load_instance_from_solr always instantiate the model defined in the object.
12
12
  Run a stub :environment task in the fixture loading rake tasks (which is overridden by rails)
13
13
  Find raises ObjectNotFoundError when the object isn't found
14
14
  Removed dependency on solrizer-fedora
@@ -316,7 +316,6 @@ module ActiveFedora
316
316
  end
317
317
 
318
318
 
319
- # ** EXPERIMENTAL **
320
319
  # This method adapts the inner_object to a new ActiveFedora::Base implementation
321
320
  # This is intended to minimize redundant interactions with Fedora
322
321
  def adapt_to(klass)
@@ -346,8 +345,6 @@ module ActiveFedora
346
345
  self.init_with DigitalObject.find(self.class,self.pid)
347
346
  end
348
347
 
349
- # ** EXPERIMENTAL **
350
- #
351
348
  # This method can be used instead of ActiveFedora::Model::ClassMethods.find.
352
349
  # It works similarly except it populates an object from Solr instead of Fedora.
353
350
  # It is most useful for objects used in read-only displays in order to speed up loading time. If only
@@ -369,8 +366,13 @@ module ActiveFedora
369
366
  else
370
367
  raise "Solr document record id and pid do not match" unless pid == solr_doc[SOLR_DOCUMENT_ID]
371
368
  end
369
+ klass = if class_str = solr_doc['active_fedora_model_s']
370
+ class_str.first.constantize
371
+ else
372
+ ActiveFedora::Base
373
+ end
372
374
 
373
- obj = self.allocate.init_with(SolrDigitalObject.new(solr_doc, self))
375
+ obj = klass.allocate.init_with(SolrDigitalObject.new(solr_doc, self))
374
376
  #set by default to load any dependent relationship objects from solr as well
375
377
  #need to call rels_ext once so it exists when iterating over datastreams
376
378
  obj.rels_ext
@@ -475,7 +477,7 @@ module ActiveFedora
475
477
  include Associations
476
478
  include NestedAttributes
477
479
  include Reflection
478
- include NamedRelationships
480
+ include NamedRelationships ##TODO don't include by default
479
481
  end
480
482
 
481
483
  end
@@ -248,22 +248,23 @@ module ActiveFedora
248
248
  def field(name, tupe, opts={})
249
249
  #TODO add term to terminology
250
250
  @fields[name.to_s.to_sym]={:type=>tupe, :values=>[]}.merge(opts)
251
- eval <<-EOS
252
- def #{name}_values=(arg)
251
+ #eval <<-EOS
252
+ (class << self; self; end).class_eval do
253
+ define_method "#{name}_values=".to_sym do |arg|
253
254
  ensure_xml_loaded
254
255
  @fields["#{name.to_s}".to_sym][:values]=[arg].flatten
255
256
  self.dirty=true
256
257
  end
257
- def #{name}_values
258
+ define_method "#{name}_values".to_sym do
258
259
  ensure_xml_loaded
259
260
  @fields["#{name}".to_sym][:values]
260
261
  end
261
- def #{name}_append(arg)
262
+ define_method "#{name}_append".to_sym do |arg|
262
263
  ensure_xml_loaded
263
264
  @fields["#{name}".to_sym][:values] << arg
264
265
  self.dirty =true
265
266
  end
266
- EOS
267
+ end
267
268
  end
268
269
 
269
270
  end
@@ -176,10 +176,9 @@ module ActiveFedora
176
176
  values = []
177
177
  solr_doc = @internal_solr_doc
178
178
  return values if solr_doc.nil?
179
- begin
180
- term = self.class.terminology.retrieve_term(*OM.pointers_to_flat_array(term_pointer, false))
181
- #check if hierarchical term pointer
182
- if is_hierarchical_term_pointer?(*term_pointer)
179
+ term = self.class.terminology.retrieve_term(*OM.pointers_to_flat_array(term_pointer, false))
180
+ #check if hierarchical term pointer
181
+ if is_hierarchical_term_pointer?(*term_pointer)
183
182
  # if we are hierarchical need to detect all possible node values that exist
184
183
  # we do this by building up the possible solr names parent by parent and/or child by child
185
184
  # if an index is supplied for any node in the pointer it will be used
@@ -227,7 +226,7 @@ module ActiveFedora
227
226
  value.is_a?(Array) ? values.concat(value) : values << value
228
227
  end
229
228
  end
230
- else
229
+ else
231
230
  #this is not hierarchical and we can simply look for the solr name created using the terms without any indexes
232
231
  generic_field_name_base = OM::XML::Terminology.term_generic_name(*term_pointer)
233
232
  generic_field_name = generate_solr_symbol(generic_field_name_base, term.data_type)
@@ -235,10 +234,6 @@ module ActiveFedora
235
234
  unless value.nil?
236
235
  value.is_a?(Array) ? values.concat(value) : values << value
237
236
  end
238
- end
239
- rescue Exception => e
240
- #just do nothing since term does not exist and return emtpy values
241
- raise e
242
237
  end
243
238
  values
244
239
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "4.0.0.rc13"
2
+ VERSION = "4.0.0.rc14"
3
3
  end
@@ -58,4 +58,10 @@ describe ActiveFedora::Model do
58
58
  end
59
59
  end
60
60
 
61
+ describe "#load_instance_from_solr" do
62
+ describe "with a valid pid" do
63
+ subject { ActiveFedora::Base.load_instance_from_solr('hydrangea:fixture_mods_article1') }
64
+ it { should be_instance_of HydrangeaArticle}
65
+ end
66
+ end
61
67
  end
@@ -1,31 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Base do
4
-
5
- before(:all) do
6
- class HydrangeaArticle < ActiveFedora::Base
7
- include ActiveFedora::Relationships
8
- has_relationship "parts", :is_part_of, :inbound => true
9
-
10
- # Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
11
- # has_metadata :name => "rightsMetadata", :type => Hydra::RightsMetadata
12
-
13
- # Uses the Hydra MODS Article profile for tracking most of the descriptive metadata
14
- has_metadata :name => "descMetadata", :type => Hydra::ModsArticleDatastream
15
-
16
- # A place to put extra metadata values
17
- has_metadata :name => "properties", :type => ActiveFedora::MetadataDatastream do |m|
18
- m.field 'collection', :string
19
- end
20
- end
21
- end
22
-
23
- before(:each) do
24
- @test_article = HydrangeaArticle.find("hydrangea:fixture_mods_article1")
25
- end
26
-
27
4
  describe ".update_indexed_attributes" do
28
5
  before(:each) do
6
+ @test_article = HydrangeaArticle.find("hydrangea:fixture_mods_article1")
29
7
  @test_article.update_indexed_attributes({[{:person=>0}, :first_name] => "GIVEN NAMES"}, :datastreams=>"descMetadata")
30
8
  end
31
9
  after(:each) do
@@ -101,11 +101,6 @@ describe ActiveFedora::Model do
101
101
  end
102
102
  end
103
103
 
104
-
105
- it 'should provide #find_by_solr' do
106
- SpecModel::Basic.should respond_to(:find)
107
- end
108
-
109
104
  describe '#find_by_solr' do
110
105
  it "(:all) should query solr for all objects with :active_fedora_model_s of self.class and return a Solr result" do
111
106
  mock_response = mock("SolrResponse")
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15424143
4
+ hash: 15424137
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 4
8
8
  - 0
9
9
  - 0
10
10
  - rc
11
- - 13
12
- version: 4.0.0.rc13
11
+ - 14
12
+ version: 4.0.0.rc14
13
13
  platform: ruby
14
14
  authors:
15
15
  - Matt Zumwalt
@@ -19,7 +19,7 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2012-03-16 00:00:00 Z
22
+ date: 2012-03-18 00:00:00 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  prerelease: false