active-fedora 7.0.4 → 7.1.0
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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/History.txt +51 -1
- data/active-fedora.gemspec +19 -19
- data/lib/active_fedora.rb +1 -6
- data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +1 -1
- data/lib/active_fedora/associations/collection_association.rb +1 -1
- data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +1 -1
- data/lib/active_fedora/attributes.rb +8 -0
- data/lib/active_fedora/base.rb +1 -1
- data/lib/active_fedora/callbacks.rb +1 -1
- data/lib/active_fedora/core.rb +13 -5
- data/lib/active_fedora/datastream_attribute.rb +1 -1
- data/lib/active_fedora/datastream_hash.rb +12 -6
- data/lib/active_fedora/fedora_attributes.rb +1 -1
- data/lib/active_fedora/file_configurator.rb +3 -3
- data/lib/active_fedora/fixture_loader.rb +2 -2
- data/lib/active_fedora/model.rb +2 -2
- data/lib/active_fedora/om_datastream.rb +2 -2
- data/lib/active_fedora/persistence.rb +22 -18
- data/lib/active_fedora/railtie.rb +5 -1
- data/lib/active_fedora/rdf.rb +11 -9
- data/lib/active_fedora/rdf/indexing.rb +1 -1
- data/lib/active_fedora/rdf/object_resource.rb +1 -1
- data/lib/active_fedora/rdf/rdf_datastream.rb +3 -3
- data/lib/active_fedora/relation/finder_methods.rb +16 -10
- data/lib/active_fedora/solr_instance_loader.rb +1 -1
- data/lib/active_fedora/solr_service.rb +1 -3
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/attributes_spec.rb +4 -4
- data/spec/integration/base_spec.rb +32 -13
- data/spec/integration/complex_rdf_datastream_spec.rb +4 -4
- data/spec/integration/delete_all_spec.rb +1 -1
- data/spec/integration/load_from_solr_spec.rb +1 -1
- data/spec/integration/rdf_nested_attributes_spec.rb +4 -4
- data/spec/integration/scoped_query_spec.rb +6 -6
- data/spec/spec_helper.rb +5 -3
- data/spec/unit/attributes_spec.rb +19 -1
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +9 -0
- data/spec/unit/datastreams_spec.rb +4 -0
- data/spec/unit/file_configurator_spec.rb +5 -5
- data/spec/unit/logger_spec.rb +20 -0
- data/spec/unit/om_datastream_spec.rb +1 -1
- data/spec/unit/persistence_spec.rb +50 -0
- data/spec/unit/query_spec.rb +15 -5
- data/spec/unit/rdf_resource_datastream_spec.rb +3 -3
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +1 -1
- data/spec/unit/solr_config_options_spec.rb +1 -1
- data/spec/unit/solr_service_spec.rb +1 -1
- metadata +33 -168
- data/lib/active_fedora/rdf/configurable.rb +0 -59
- data/lib/active_fedora/rdf/list.rb +0 -155
- data/lib/active_fedora/rdf/nested_attributes.rb +0 -130
- data/lib/active_fedora/rdf/node_config.rb +0 -57
- data/lib/active_fedora/rdf/properties.rb +0 -94
- data/lib/active_fedora/rdf/repositories.rb +0 -36
- data/lib/active_fedora/rdf/resource.rb +0 -328
- data/lib/active_fedora/rdf/term.rb +0 -188
- data/spec/unit/rdf_configurable_spec.rb +0 -37
- data/spec/unit/rdf_list_nested_attributes_spec.rb +0 -99
- data/spec/unit/rdf_list_spec.rb +0 -180
- data/spec/unit/rdf_properties_spec.rb +0 -81
- data/spec/unit/rdf_repositories_spec.rb +0 -28
- data/spec/unit/rdf_resource_spec.rb +0 -345
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 481726bbeb31ad09149dbe0facfcc577a504f0da
|
4
|
+
data.tar.gz: 66f87369d95a41cb5c0d5fd02dccd43f89e589f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82de3808e266997ca4e95144e6792877398deabddceb9cc7306ea0f7badecfe5d79a666915cb688a4fa2b5fcabc1997436b31593c39e52f7e6a204d3b48aaa77
|
7
|
+
data.tar.gz: f038a141b3d4136c9d5313e63137412a912f5a78632c0ca27efe235757e030e117f7d3b58d97c9544bfddb3a8e12b0b2b666a03145b1283957e8be9fffc6ae32
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/History.txt
CHANGED
@@ -1,4 +1,54 @@
|
|
1
|
-
v7.
|
1
|
+
v7.1.0
|
2
|
+
|
3
|
+
2014-07-17: Update Om and Rubydora depencencies [Justin Coyne]
|
4
|
+
|
5
|
+
2014-07-17: Change the deprecation message so that it helps you find where the
|
6
|
+
problem is [Justin Coyne]
|
7
|
+
|
8
|
+
2014-06-30: Refactoring ActiveFedora::Rdf to use ActiveTriples [Tom Johnson]
|
9
|
+
|
10
|
+
2014-07-16: Make logger an accessor that can be set [Justin Coyne]
|
11
|
+
|
12
|
+
2014-07-16: Remove mediashelf-loggable [Justin Coyne]
|
13
|
+
|
14
|
+
2014-06-24: Replace ActiveFedora::Core#init_with with #init_with_object to avoid
|
15
|
+
a respond_to? false positive in Psych [Michael B. Klein]
|
16
|
+
|
17
|
+
2014-06-24: Have DatastreamHash delegate to a Hash instead of descending from
|
18
|
+
one [Michael B. Klein]
|
19
|
+
|
20
|
+
2014-06-24: Add solr_page_size as a valid option for HABTM [Justin Coyne]
|
21
|
+
|
22
|
+
2014-06-23: Refactor for style/readability [Justin Coyne]
|
23
|
+
|
24
|
+
2014-06-18: Adds :update_index option to `save' -- passing a false value will
|
25
|
+
prevent `update_index' from being called after the object is persisted. The
|
26
|
+
`create_needs_index?' and `update_needs_index?' methods, however, will not be
|
27
|
+
overridden when they return false. [David Chandek-Stark]
|
28
|
+
|
29
|
+
2014-06-18: Fixed bug in ActiveFedora::FinderMethods#load_from_fedora so that it
|
30
|
+
casts when klass is ActiveFedora::Base and `cast' argument is nil, as intended.
|
31
|
+
Fixes #431 since by default it calls load_from_fedora(pid, nil) on each hit.
|
32
|
+
[David Chandek-Stark]
|
33
|
+
|
34
|
+
2014-06-13: Created pid instance variable so value can be retained after destroy
|
35
|
+
Fixes #422 [David Chandek-Stark]
|
36
|
+
|
37
|
+
2014-06-10: Added support to `exists?' finder method for a hash of conditions
|
38
|
+
Fixes #427 [David Chandek-Stark]
|
39
|
+
|
40
|
+
2014-06-10: Deprecate setting multiple attribute to scalar value Deprecate
|
41
|
+
setting unique attribute to enumerable value [David Chandek-Stark]
|
42
|
+
|
43
|
+
2014-06-10: Remove useage of RDF.Class from test code. That's not a real URI
|
44
|
+
[Justin Coyne]
|
45
|
+
|
46
|
+
2014-06-10: Peg rspec to ~> 2.99 [Justin Coyne]
|
47
|
+
|
48
|
+
2014-06-10: Put rspec options in a .rspec file for rspec 3 [Justin Coyne]
|
49
|
+
|
50
|
+
|
51
|
+
v7.0.0
|
2
52
|
|
3
53
|
Removed update_indexed_attributes, update_datastream_attributes, get_values_from_datastream
|
4
54
|
|
data/active-fedora.gemspec
CHANGED
@@ -14,27 +14,27 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.license = "APACHE2"
|
15
15
|
s.required_ruby_version = '>= 1.9.3'
|
16
16
|
|
17
|
-
s.add_dependency
|
18
|
-
s.add_dependency
|
19
|
-
s.add_dependency
|
20
|
-
s.add_dependency
|
21
|
-
s.add_dependency
|
22
|
-
s.add_dependency
|
23
|
-
s.add_dependency
|
24
|
-
s.add_dependency
|
25
|
-
s.
|
26
|
-
s.add_development_dependency
|
27
|
-
s.add_development_dependency
|
28
|
-
s.add_development_dependency
|
29
|
-
s.add_development_dependency
|
30
|
-
s.add_development_dependency
|
31
|
-
s.add_development_dependency
|
32
|
-
s.add_development_dependency
|
33
|
-
s.add_development_dependency
|
34
|
-
s.add_development_dependency
|
17
|
+
s.add_dependency 'rsolr', "~> 1.0.10"
|
18
|
+
s.add_dependency 'om', '~> 3.1'
|
19
|
+
s.add_dependency 'nom-xml', '>= 0.5.1'
|
20
|
+
s.add_dependency "activesupport", '>= 3.0.0'
|
21
|
+
s.add_dependency "rubydora", '~> 1.8'
|
22
|
+
s.add_dependency "active-triples", '~> 0.2.2'
|
23
|
+
s.add_dependency "rdf-rdfxml", '~> 1.1.0'
|
24
|
+
s.add_dependency "deprecation"
|
25
|
+
s.add_development_dependency "rdoc"
|
26
|
+
s.add_development_dependency "yard"
|
27
|
+
s.add_development_dependency "rake"
|
28
|
+
s.add_development_dependency "jettywrapper", ">=1.4.0"
|
29
|
+
s.add_development_dependency "rspec", "~> 2.99"
|
30
|
+
s.add_development_dependency "rspec-its"
|
31
|
+
s.add_development_dependency "equivalent-xml"
|
32
|
+
s.add_development_dependency "rest-client"
|
33
|
+
s.add_development_dependency "webmock"
|
34
|
+
s.add_development_dependency "simplecov", '~> 0.7.1'
|
35
35
|
|
36
36
|
s.files = `git ls-files`.split("\n")
|
37
|
-
s.test_files = `git ls-files -- {
|
37
|
+
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
38
38
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
39
39
|
s.extra_rdoc_files = [
|
40
40
|
"LICENSE",
|
data/lib/active_fedora.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "loggable"
|
2
1
|
require 'active_support'
|
3
2
|
require "solrizer"
|
4
3
|
require 'active_fedora/file_configurator'
|
@@ -7,7 +6,7 @@ require 'active_support/core_ext/class/attribute'
|
|
7
6
|
require 'active_support/core_ext/object'
|
8
7
|
require 'active_support/core_ext/hash/indifferent_access'
|
9
8
|
require "active_support/core_ext/hash/except"
|
10
|
-
require '
|
9
|
+
require 'active_triples'
|
11
10
|
|
12
11
|
SOLR_DOCUMENT_ID = Solrizer.default_field_mapper.id_field unless defined?(SOLR_DOCUMENT_ID)
|
13
12
|
ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
|
@@ -100,10 +99,6 @@ module ActiveFedora #:nodoc:
|
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
103
|
-
|
104
|
-
|
105
|
-
include Loggable
|
106
|
-
|
107
102
|
class << self
|
108
103
|
attr_reader :fedora_config, :solr_config, :config_options
|
109
104
|
attr_accessor :configurator
|
@@ -2,7 +2,7 @@ module ActiveFedora::Associations::Builder
|
|
2
2
|
class HasAndBelongsToMany < CollectionAssociation #:nodoc:
|
3
3
|
self.macro = :has_and_belongs_to_many
|
4
4
|
|
5
|
-
self.valid_options += [:inverse_of]
|
5
|
+
self.valid_options += [:inverse_of, :solr_page_size]
|
6
6
|
|
7
7
|
def build
|
8
8
|
reflection = super
|
@@ -246,7 +246,7 @@ module ActiveFedora
|
|
246
246
|
begin
|
247
247
|
targets = find_target
|
248
248
|
rescue ObjectNotFoundError => e
|
249
|
-
ActiveFedora::Base.logger.error "Solr and Fedora may be out of sync:\n" + e.message
|
249
|
+
ActiveFedora::Base.logger.error "Solr and Fedora may be out of sync:\n" + e.message if ActiveFedora::Base.logger
|
250
250
|
reset
|
251
251
|
end
|
252
252
|
|
@@ -19,7 +19,7 @@ module ActiveFedora
|
|
19
19
|
@owner.add_relationship(@reflection.options[:property], record)
|
20
20
|
|
21
21
|
if @owner.new_record? and @reflection.options[:inverse_of]
|
22
|
-
logger.warn("has_and_belongs_to_many #{@reflection.inspect} is cowardly refusing to insert the inverse relationship into #{record}, because #{@owner} is not persisted yet.")
|
22
|
+
ActiveFedora::Base.logger.warn("has_and_belongs_to_many #{@reflection.inspect} is cowardly refusing to insert the inverse relationship into #{record}, because #{@owner} is not persisted yet.") if ActiveFedora::Base.logger
|
23
23
|
elsif @reflection.options[:inverse_of]
|
24
24
|
record.add_relationship(@reflection.options[:inverse_of], @owner)
|
25
25
|
record.save
|
@@ -3,6 +3,7 @@ module ActiveFedora
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
extend ActiveSupport::Autoload
|
5
5
|
include ActiveModel::Dirty
|
6
|
+
extend Deprecation
|
6
7
|
|
7
8
|
autoload :Serializers
|
8
9
|
|
@@ -138,6 +139,13 @@ module ActiveFedora
|
|
138
139
|
def create_attribute_setter(field, dsid, args)
|
139
140
|
find_or_create_defined_attribute(field, dsid, args)
|
140
141
|
define_method "#{field}=".to_sym do |v|
|
142
|
+
if self.class.multiple?(field)
|
143
|
+
unless v.nil? || v.respond_to?(:each)
|
144
|
+
Deprecation.warn(ActiveFedora::Attributes, "You attempted to set the attribute `#{field}' on `#{self.class}' to a scalar value. However, this attribute is declared as being multivalued. This behavior is deprecated and will raise an ArgumentError in active-fedora 8.0.0")
|
145
|
+
end
|
146
|
+
elsif v.respond_to?(:each) # unique
|
147
|
+
Deprecation.warn(ActiveFedora::Attributes, "You attempted to set the attribute `#{field}' on `#{self.class}' to an enumerable value. However, this attribute is declared as being singular. This behavior is deprecated and will raise an ArgumentError in active-fedora 8.0.0")
|
148
|
+
end
|
141
149
|
self[field]=v
|
142
150
|
end
|
143
151
|
end
|
data/lib/active_fedora/base.rb
CHANGED
@@ -30,7 +30,6 @@ module ActiveFedora
|
|
30
30
|
include Sharding
|
31
31
|
include ActiveFedora::Persistence
|
32
32
|
include Scoping
|
33
|
-
include Loggable
|
34
33
|
include Indexing
|
35
34
|
include ActiveModel::Conversion
|
36
35
|
include Validations
|
@@ -49,4 +48,5 @@ module ActiveFedora
|
|
49
48
|
include Rdf::Identifiable
|
50
49
|
end
|
51
50
|
|
51
|
+
ActiveSupport.run_load_hooks(:active_fedora, Base)
|
52
52
|
end
|
data/lib/active_fedora/core.rb
CHANGED
@@ -3,6 +3,14 @@ module ActiveFedora
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
attr_reader :inner_object
|
6
|
+
included do
|
7
|
+
##
|
8
|
+
# :singleton-method:
|
9
|
+
#
|
10
|
+
# Accepts a logger conforming to the interface of Log4r which can be
|
11
|
+
# retrieved on both a class and instance level by calling +logger+.
|
12
|
+
mattr_accessor :logger, instance_writer: false
|
13
|
+
end
|
6
14
|
|
7
15
|
# Constructor. You may supply a custom +:pid+, or we call the Fedora Rest API for the
|
8
16
|
# next available Fedora pid, and mark as new object.
|
@@ -27,7 +35,7 @@ module ActiveFedora
|
|
27
35
|
raise ActiveFedora::ObjectNotFoundError, "Can't reload an object that hasn't been saved" unless persisted?
|
28
36
|
clear_association_cache
|
29
37
|
clear_relationships
|
30
|
-
|
38
|
+
init_with_object(self.class.find(self.pid).inner_object)
|
31
39
|
end
|
32
40
|
|
33
41
|
# Initialize an empty model object and set the +inner_obj+
|
@@ -38,9 +46,9 @@ module ActiveFedora
|
|
38
46
|
# end
|
39
47
|
#
|
40
48
|
# post = Post.allocate
|
41
|
-
# post.
|
49
|
+
# post.init_with_object(DigitalObject.find(pid))
|
42
50
|
# post.properties.title # => 'hello world'
|
43
|
-
def
|
51
|
+
def init_with_object(inner_obj)
|
44
52
|
@association_cache = {}
|
45
53
|
@inner_object = inner_obj
|
46
54
|
unless @inner_object.is_a? SolrDigitalObject
|
@@ -108,7 +116,7 @@ module ActiveFedora
|
|
108
116
|
unless klass.ancestors.include? ActiveFedora::Base
|
109
117
|
raise "Cannot adapt #{self.class.name} to #{klass.name}: Not a ActiveFedora::Base subclass"
|
110
118
|
end
|
111
|
-
klass.allocate.
|
119
|
+
klass.allocate.init_with_object(inner_object)
|
112
120
|
end
|
113
121
|
|
114
122
|
# Examines the :has_model assertions in the RELS-EXT.
|
@@ -147,7 +155,7 @@ module ActiveFedora
|
|
147
155
|
if self.inner_object.is_a? DigitalObject
|
148
156
|
raise "#{self.inspect} is already a full digital object"
|
149
157
|
end
|
150
|
-
self.
|
158
|
+
self.init_with_object DigitalObject.find(self.class,self.pid)
|
151
159
|
end
|
152
160
|
|
153
161
|
module ClassMethods
|
@@ -48,7 +48,7 @@ module ActiveFedora
|
|
48
48
|
return obj.inner_object.fetch(field)
|
49
49
|
rescue NoMethodError => e
|
50
50
|
# couldn't get it from solr, so try from fedora.
|
51
|
-
logger.info "Couldn't get #{field} out of solr, because #{e.message}. Trying another way."
|
51
|
+
ActiveFedora::Base.logger.info "Couldn't get #{field} out of solr, because #{e.message}. Trying another way." if ActiveFedora::Base.logger
|
52
52
|
end
|
53
53
|
end
|
54
54
|
# Load from fedora
|
@@ -1,9 +1,14 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
1
3
|
module ActiveFedora
|
2
|
-
class DatastreamHash
|
4
|
+
class DatastreamHash
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
def_delegators :@hash, *(Hash.instance_methods(false))
|
3
8
|
|
4
|
-
def initialize (obj)
|
9
|
+
def initialize (obj, &block)
|
5
10
|
@obj = obj
|
6
|
-
|
11
|
+
@hash = Hash.new &block
|
7
12
|
end
|
8
13
|
|
9
14
|
def [] (key)
|
@@ -11,18 +16,19 @@ module ActiveFedora
|
|
11
16
|
ds = Datastream.new(@obj.inner_object, key, :controlGroup=>'X')
|
12
17
|
self[key] = ds
|
13
18
|
end
|
14
|
-
|
19
|
+
@hash[key]
|
15
20
|
end
|
16
21
|
|
17
22
|
def []= (key, val)
|
18
23
|
@obj.inner_object.datastreams[key]=val
|
19
|
-
|
20
|
-
end
|
24
|
+
@hash[key]=val
|
25
|
+
end
|
21
26
|
|
22
27
|
def freeze
|
23
28
|
each_value do |datastream|
|
24
29
|
datastream.freeze
|
25
30
|
end
|
31
|
+
@hash.freeze
|
26
32
|
super
|
27
33
|
end
|
28
34
|
end
|
@@ -7,7 +7,7 @@ module ActiveFedora
|
|
7
7
|
# if there is no fedora object (loaded from solr) get the instance var
|
8
8
|
# TODO make inner_object a proxy that can hold the pid
|
9
9
|
def pid
|
10
|
-
@inner_object.pid
|
10
|
+
@pid ||= @inner_object.pid
|
11
11
|
end
|
12
12
|
|
13
13
|
def id ### Needed for the nested form helper
|
@@ -101,7 +101,7 @@ module ActiveFedora
|
|
101
101
|
def load_fedora_config
|
102
102
|
return @fedora_config unless @fedora_config.empty?
|
103
103
|
@fedora_config_path = get_config_path(:fedora)
|
104
|
-
logger.info("ActiveFedora: loading fedora config from #{File.expand_path(@fedora_config_path)}")
|
104
|
+
ActiveFedora::Base.logger.info("ActiveFedora: loading fedora config from #{File.expand_path(@fedora_config_path)}") if ActiveFedora::Base.logger
|
105
105
|
|
106
106
|
begin
|
107
107
|
config_erb = ERB.new(IO.read(@fedora_config_path)).result(binding)
|
@@ -126,7 +126,7 @@ module ActiveFedora
|
|
126
126
|
return @solr_config unless @solr_config.empty?
|
127
127
|
@solr_config_path = get_config_path(:solr)
|
128
128
|
|
129
|
-
logger.info
|
129
|
+
ActiveFedora::Base.logger.info "ActiveFedora: loading solr config from #{File.expand_path(@solr_config_path)}" if ActiveFedora::Base.logger
|
130
130
|
begin
|
131
131
|
config_erb = ERB.new(IO.read(@solr_config_path)).result(binding)
|
132
132
|
rescue Exception => e
|
@@ -191,7 +191,7 @@ module ActiveFedora
|
|
191
191
|
# Last choice, check for the default config file
|
192
192
|
config_path = File.join(ActiveFedora.root, "config", "#{config_type}.yml")
|
193
193
|
if File.file? config_path
|
194
|
-
logger.warn "Using the default #{config_type}.yml that comes with active-fedora. If you want to override this, pass the path to #{config_type}.yml to ActiveFedora - ie. ActiveFedora.init(:#{config_type}_config_path => '/path/to/#{config_type}.yml') - or set Rails.root and put #{config_type}.yml into \#{Rails.root}/config."
|
194
|
+
ActiveFedora::Base.logger.warn "Using the default #{config_type}.yml that comes with active-fedora. If you want to override this, pass the path to #{config_type}.yml to ActiveFedora - ie. ActiveFedora.init(:#{config_type}_config_path => '/path/to/#{config_type}.yml') - or set Rails.root and put #{config_type}.yml into \#{Rails.root}/config." if ActiveFedora::Base.logger
|
195
195
|
return config_path
|
196
196
|
else
|
197
197
|
raise ConfigurationError, "Couldn't load #{config_type} config file!"
|
@@ -15,10 +15,10 @@ module ActiveFedora
|
|
15
15
|
ActiveFedora::Base.find(pid, cast: true).delete
|
16
16
|
1
|
17
17
|
rescue ActiveFedora::ObjectNotFoundError
|
18
|
-
logger.debug "The object #{pid} has already been deleted (or was never created)."
|
18
|
+
ActiveFedora::Base.logger.debug "The object #{pid} has already been deleted (or was never created)." if ActiveFedora::Base.logger
|
19
19
|
0
|
20
20
|
rescue Errno::ECONNREFUSED => e
|
21
|
-
logger.debug "Can't connect to Fedora! Are you sure jetty is running?"
|
21
|
+
ActiveFedora::Base.logger.debug "Can't connect to Fedora! Are you sure jetty is running?" if ActiveFedora::Base.logger
|
22
22
|
0
|
23
23
|
end
|
24
24
|
end
|
data/lib/active_fedora/model.rb
CHANGED
@@ -21,14 +21,14 @@ module ActiveFedora
|
|
21
21
|
raise "model URI incorrectly formatted: #{uri}" unless model_value
|
22
22
|
|
23
23
|
unless class_exists?(model_value)
|
24
|
-
logger.warn "#{model_value} is not a real class"
|
24
|
+
ActiveFedora::Base.logger.warn "#{model_value} is not a real class" if ActiveFedora::Base.logger
|
25
25
|
return false
|
26
26
|
end
|
27
27
|
result = ActiveFedora.class_from_string(model_value)
|
28
28
|
unless result.nil?
|
29
29
|
model_ns = (result.respond_to? :pid_namespace) ? result.pid_namespace : ContentModel::CMODEL_NAMESPACE
|
30
30
|
if model_ns != pid_ns
|
31
|
-
logger.warn "Model class namespace '#{model_ns}' does not match uri: '#{uri}'"
|
31
|
+
ActiveFedora::Base.logger.warn "Model class namespace '#{model_ns}' does not match uri: '#{uri}'" if ActiveFedora::Base.logger
|
32
32
|
end
|
33
33
|
end
|
34
34
|
result
|
@@ -5,7 +5,7 @@ module ActiveFedora
|
|
5
5
|
|
6
6
|
before_save do
|
7
7
|
if content.blank?
|
8
|
-
logger.warn "Cowardly refusing to save a datastream with empty content: #{self.inspect}"
|
8
|
+
ActiveFedora::Base.logger.warn "Cowardly refusing to save a datastream with empty content: #{self.inspect}" if ActiveFedora::Base.logger
|
9
9
|
false
|
10
10
|
end
|
11
11
|
end
|
@@ -247,7 +247,7 @@ module ActiveFedora
|
|
247
247
|
current_params = params.clone
|
248
248
|
current_params.delete_if do |term_pointer,new_values|
|
249
249
|
if term_pointer.kind_of?(String)
|
250
|
-
logger.warn "WARNING: #{dsid} ignoring {#{term_pointer.inspect} => #{new_values.inspect}} because #{term_pointer.inspect} is a String (only valid OM Term Pointers will be used). Make sure your html has the correct field_selector tags in it."
|
250
|
+
ActiveFedora::Base.logger.warn "WARNING: #{dsid} ignoring {#{term_pointer.inspect} => #{new_values.inspect}} because #{term_pointer.inspect} is a String (only valid OM Term Pointers will be used). Make sure your html has the correct field_selector tags in it." if ActiveFedora::Base.logger
|
251
251
|
true
|
252
252
|
else
|
253
253
|
!self.class.terminology.has_term?(*OM.destringify(term_pointer))
|
@@ -4,7 +4,6 @@ module ActiveFedora
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
extend Deprecation
|
6
6
|
self.deprecation_horizon = 'active-fedora version 8.0.0'
|
7
|
-
|
8
7
|
|
9
8
|
def new?
|
10
9
|
new_record?
|
@@ -16,7 +15,6 @@ module ActiveFedora
|
|
16
15
|
new_record?
|
17
16
|
end
|
18
17
|
deprecation_deprecate :new_object?
|
19
|
-
|
20
18
|
|
21
19
|
## Required by associations
|
22
20
|
def new_record?
|
@@ -32,15 +30,19 @@ module ActiveFedora
|
|
32
30
|
@destroyed
|
33
31
|
end
|
34
32
|
|
35
|
-
#Saves a Base object, and any dirty datastreams, then updates
|
36
|
-
#the Solr index for this object.
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
# Saves a Base object, and any dirty datastreams, then updates
|
34
|
+
# the Solr index for this object, unless option :update_index=>false is present.
|
35
|
+
# Indexing is also controlled by the `create_needs_index?' and `update_needs_index?' methods.
|
36
|
+
#
|
37
|
+
# @param [Hash] options
|
38
|
+
# @option options [Boolean] :update_index (true) set false to skip indexing
|
39
|
+
# @return [Boolean] true if save was successful, otherwise false
|
40
|
+
def save(options={})
|
41
|
+
new_record? ? create(options) : update_record(options)
|
40
42
|
end
|
41
43
|
|
42
|
-
def save!(
|
43
|
-
save
|
44
|
+
def save!(options={})
|
45
|
+
save(options)
|
44
46
|
end
|
45
47
|
|
46
48
|
# This can be overriden to assert a different model
|
@@ -73,10 +75,10 @@ module ActiveFedora
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
76
|
-
pid
|
78
|
+
@pid ||= self.pid ## cache so it's still available after delete
|
77
79
|
begin
|
78
80
|
@inner_object.delete
|
79
|
-
rescue RestClient::ResourceNotFound =>e
|
81
|
+
rescue RestClient::ResourceNotFound => e
|
80
82
|
raise ObjectNotFoundError, "Unable to find #{pid} in the repository"
|
81
83
|
end
|
82
84
|
if ENABLE_SOLR_UPDATES
|
@@ -128,13 +130,13 @@ module ActiveFedora
|
|
128
130
|
|
129
131
|
protected
|
130
132
|
|
131
|
-
# Determines whether a create operation
|
132
|
-
# Override this if you need different behavior
|
133
|
+
# Determines whether a create operation causes a solr index of this object by default.
|
134
|
+
# Override this if you need different behavior.
|
133
135
|
def create_needs_index?
|
134
136
|
ENABLE_SOLR_UPDATES
|
135
137
|
end
|
136
138
|
|
137
|
-
# Determines whether an update operation
|
139
|
+
# Determines whether an update operation causes a solr index of this object by default.
|
138
140
|
# Override this if you need different behavior
|
139
141
|
def update_needs_index?
|
140
142
|
ENABLE_SOLR_UPDATES
|
@@ -143,14 +145,16 @@ module ActiveFedora
|
|
143
145
|
private
|
144
146
|
|
145
147
|
# Deals with preparing new object to be saved to Fedora, then pushes it and its datastreams into Fedora.
|
146
|
-
def create
|
148
|
+
def create(options={})
|
147
149
|
assign_pid
|
148
150
|
assert_content_model
|
149
|
-
|
151
|
+
should_update_index = create_needs_index? && options.fetch(:update_index, true)
|
152
|
+
persist(should_update_index)
|
150
153
|
end
|
151
154
|
|
152
|
-
def update_record
|
153
|
-
|
155
|
+
def update_record(options={})
|
156
|
+
should_update_index = update_needs_index? && options.fetch(:update_index, true)
|
157
|
+
persist(should_update_index)
|
154
158
|
end
|
155
159
|
|
156
160
|
# replace the unsaved digital object with a saved digital object
|