active-fedora 7.0.4 → 7.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|