active-fedora 9.9.1 → 9.10.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -2
- data/.travis.yml +2 -6
- data/active-fedora.gemspec +9 -6
- data/lib/active_fedora.rb +31 -15
- data/lib/active_fedora/associations.rb +1 -1
- data/lib/active_fedora/associations/association.rb +6 -2
- data/lib/active_fedora/associations/belongs_to_association.rb +0 -10
- data/lib/active_fedora/associations/builder/association.rb +85 -12
- data/lib/active_fedora/associations/builder/belongs_to.rb +3 -1
- data/lib/active_fedora/associations/builder/collection_association.rb +4 -3
- data/lib/active_fedora/associations/builder/contains.rb +7 -2
- data/lib/active_fedora/associations/builder/directly_contains.rb +7 -3
- data/lib/active_fedora/associations/builder/directly_contains_one.rb +8 -4
- data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +6 -2
- data/lib/active_fedora/associations/builder/has_many.rb +6 -2
- data/lib/active_fedora/associations/builder/indirectly_contains.rb +7 -3
- data/lib/active_fedora/associations/builder/property.rb +7 -2
- data/lib/active_fedora/associations/builder/singular_association.rb +3 -1
- data/lib/active_fedora/associations/builder/singular_property.rb +3 -1
- data/lib/active_fedora/associations/collection_association.rb +9 -5
- data/lib/active_fedora/associations/collection_proxy.rb +1 -1
- data/lib/active_fedora/associations/contained_finder.rb +1 -2
- data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -1
- data/lib/active_fedora/associations/has_many_association.rb +1 -5
- data/lib/active_fedora/associations/rdf.rb +1 -20
- data/lib/active_fedora/attached_files.rb +1 -1
- data/lib/active_fedora/attribute_methods.rb +18 -0
- data/lib/active_fedora/attributes.rb +1 -1
- data/lib/active_fedora/autosave_association.rb +8 -12
- data/lib/active_fedora/base.rb +0 -2
- data/lib/active_fedora/caching_connection.rb +1 -1
- data/lib/active_fedora/default_model_mapper.rb +24 -0
- data/lib/active_fedora/fedora.rb +1 -1
- data/lib/active_fedora/file/attributes.rb +4 -5
- data/lib/active_fedora/identifiable.rb +5 -0
- data/lib/active_fedora/indexing.rb +13 -7
- data/lib/active_fedora/indexing_service.rb +4 -4
- data/lib/active_fedora/ldp_resource.rb +1 -0
- data/lib/active_fedora/model.rb +18 -16
- data/lib/active_fedora/model_classifier.rb +77 -0
- data/lib/active_fedora/nested_attributes.rb +145 -18
- data/lib/active_fedora/persistence.rb +1 -1
- data/lib/active_fedora/predicates.rb +3 -0
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
- data/lib/active_fedora/query_result_builder.rb +12 -28
- data/lib/active_fedora/querying.rb +1 -1
- data/lib/active_fedora/rdf/datastream_indexing.rb +1 -1
- data/lib/active_fedora/reflection.rb +15 -7
- data/lib/active_fedora/relation.rb +17 -0
- data/lib/active_fedora/relation/calculations.rb +1 -5
- data/lib/active_fedora/relation/finder_methods.rb +39 -26
- data/lib/active_fedora/scoping.rb +5 -0
- data/lib/active_fedora/scoping/default.rb +113 -0
- data/lib/active_fedora/scoping/named.rb +11 -3
- data/lib/active_fedora/simple_datastream.rb +1 -1
- data/lib/active_fedora/solr_hit.rb +71 -0
- data/lib/active_fedora/solr_instance_loader.rb +12 -36
- data/lib/active_fedora/solr_query_builder.rb +20 -25
- data/lib/active_fedora/solr_service.rb +24 -13
- data/lib/active_fedora/type.rb +8 -0
- data/lib/active_fedora/type/boolean.rb +23 -0
- data/lib/active_fedora/type/value.rb +118 -0
- data/lib/active_fedora/validations.rb +14 -5
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/versionable.rb +8 -7
- data/spec/config_helper.rb +0 -5
- data/spec/integration/associations_spec.rb +5 -5
- data/spec/integration/base_spec.rb +4 -4
- data/spec/integration/bug_spec.rb +0 -1
- data/spec/integration/full_featured_model_spec.rb +4 -4
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +1 -1
- data/spec/integration/has_many_associations_spec.rb +30 -1
- data/spec/integration/indirect_container_spec.rb +1 -1
- data/spec/integration/nested_attribute_spec.rb +6 -0
- data/spec/integration/ntriples_datastream_spec.rb +4 -4
- data/spec/integration/om_datastream_spec.rb +1 -1
- data/spec/integration/relation_delegation_spec.rb +1 -1
- data/spec/integration/scoped_query_spec.rb +12 -12
- data/spec/integration/solr_hit_spec.rb +52 -0
- data/spec/samples/hydra-mods_article_datastream.rb +2 -2
- data/spec/spec_helper.rb +5 -9
- data/spec/unit/active_fedora_spec.rb +0 -26
- data/spec/unit/base_spec.rb +20 -0
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +2 -3
- data/spec/unit/callback_spec.rb +3 -8
- data/spec/unit/default_model_mapper_spec.rb +39 -0
- data/spec/unit/finder_methods_spec.rb +30 -6
- data/spec/unit/has_many_association_spec.rb +23 -1
- data/spec/unit/indexing_spec.rb +17 -3
- data/spec/unit/model_classifier_spec.rb +49 -0
- data/spec/unit/model_spec.rb +0 -9
- data/spec/unit/ntriples_datastream_spec.rb +16 -16
- data/spec/unit/om_datastream_spec.rb +7 -7
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
- data/spec/unit/query_result_builder_spec.rb +4 -10
- data/spec/unit/query_spec.rb +28 -28
- data/spec/unit/rdf/indexing_service_spec.rb +16 -16
- data/spec/unit/scoping_spec.rb +67 -0
- data/spec/unit/simple_datastream_spec.rb +2 -2
- data/spec/unit/solr_config_options_spec.rb +29 -32
- data/spec/unit/solr_hit_spec.rb +58 -0
- data/spec/unit/solr_query_builder_spec.rb +9 -1
- data/spec/unit/solr_service_spec.rb +19 -3
- metadata +73 -17
- data/spec/support/freeze_mocks.rb +0 -12
@@ -1,8 +1,12 @@
|
|
1
1
|
module ActiveFedora::Associations::Builder
|
2
2
|
class DirectlyContainsOne < SingularAssociation #:nodoc:
|
3
|
-
self.macro
|
4
|
-
|
5
|
-
|
3
|
+
def self.macro
|
4
|
+
:directly_contains_one
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.valid_options(options)
|
8
|
+
super + [:has_member_relation, :is_member_of_relation, :type, :through] - [:predicate]
|
9
|
+
end
|
6
10
|
|
7
11
|
def validate_options
|
8
12
|
raise ArgumentError, "you must specify a :through option on #{name}. #{name} will use the container from that directly_contains association." unless options[:through]
|
@@ -34,7 +38,7 @@ module ActiveFedora::Associations::Builder
|
|
34
38
|
end
|
35
39
|
|
36
40
|
def lookup_reflection(association_name)
|
37
|
-
model.
|
41
|
+
model._reflect_on_association(association_name)
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
module ActiveFedora::Associations::Builder
|
2
2
|
class HasAndBelongsToMany < CollectionAssociation #:nodoc:
|
3
3
|
extend Deprecation
|
4
|
-
self.macro
|
4
|
+
def self.macro
|
5
|
+
:has_and_belongs_to_many
|
6
|
+
end
|
5
7
|
|
6
|
-
self.valid_options
|
8
|
+
def self.valid_options(options)
|
9
|
+
super + [:inverse_of, :solr_page_size]
|
10
|
+
end
|
7
11
|
|
8
12
|
def validate_options
|
9
13
|
super
|
@@ -1,8 +1,12 @@
|
|
1
1
|
module ActiveFedora::Associations::Builder
|
2
2
|
class HasMany < CollectionAssociation #:nodoc:
|
3
|
-
self.macro
|
3
|
+
def self.macro
|
4
|
+
:has_many
|
5
|
+
end
|
4
6
|
|
5
|
-
self.valid_options
|
7
|
+
def self.valid_options(options)
|
8
|
+
super + [:as, :dependent, :inverse_of]
|
9
|
+
end
|
6
10
|
|
7
11
|
def build
|
8
12
|
reflection = super
|
@@ -1,8 +1,12 @@
|
|
1
1
|
module ActiveFedora::Associations::Builder
|
2
2
|
class IndirectlyContains < CollectionAssociation #:nodoc:
|
3
|
-
self.macro
|
4
|
-
|
5
|
-
|
3
|
+
def self.macro
|
4
|
+
:indirectly_contains
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.valid_options(options)
|
8
|
+
super + [:has_member_relation, :is_member_of_relation, :inserted_content_relation, :foreign_key, :through] - [:predicate]
|
9
|
+
end
|
6
10
|
|
7
11
|
def build
|
8
12
|
reflection = super
|
@@ -1,7 +1,12 @@
|
|
1
1
|
module ActiveFedora::Associations::Builder
|
2
2
|
class Property < Association
|
3
|
-
self.macro
|
4
|
-
|
3
|
+
def self.macro
|
4
|
+
:rdf
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.valid_options(options)
|
8
|
+
super
|
9
|
+
end
|
5
10
|
|
6
11
|
def initialize(model, name, options)
|
7
12
|
super
|
@@ -14,7 +14,13 @@ module ActiveFedora
|
|
14
14
|
force_reload = opts
|
15
15
|
end
|
16
16
|
reload if force_reload || stale_target?
|
17
|
-
|
17
|
+
if null_scope?
|
18
|
+
# Cache the proxy separately before the owner has an id
|
19
|
+
# or else a post-save proxy will still lack the id
|
20
|
+
@null_proxy ||= CollectionProxy.new(self)
|
21
|
+
else
|
22
|
+
@proxy ||= CollectionProxy.new(self)
|
23
|
+
end
|
18
24
|
end
|
19
25
|
|
20
26
|
# Implements the writer method, e.g. foo.items= for Foo.has_many :items
|
@@ -27,9 +33,7 @@ module ActiveFedora
|
|
27
33
|
if loaded?
|
28
34
|
load_target.map(&:id)
|
29
35
|
else
|
30
|
-
load_from_solr.map
|
31
|
-
solr_record['id']
|
32
|
-
end
|
36
|
+
load_from_solr.map(&:id)
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
@@ -225,7 +229,7 @@ module ActiveFedora
|
|
225
229
|
# Count all records using solr. Construct options and pass them with
|
226
230
|
# scope to the target class's +count+.
|
227
231
|
def count(_options = {})
|
228
|
-
|
232
|
+
scope.count
|
229
233
|
end
|
230
234
|
|
231
235
|
# Sets the target of this proxy to <tt>\target</tt>, and the \loaded flag to +true+.
|
@@ -42,8 +42,7 @@ module ActiveFedora::Associations
|
|
42
42
|
query = ActiveFedora::SolrQueryBuilder.construct_query_for_rel(
|
43
43
|
[[:has_model, proxy_class.to_class_uri], [:proxyFor, record.id]]
|
44
44
|
)
|
45
|
-
|
46
|
-
results.map { |res| ::RDF::URI(ActiveFedora::Base.id_to_uri(res['id'])) }
|
45
|
+
ActiveFedora::SolrService.query(query, fl: 'id').map(&:rdf_uri)
|
47
46
|
end
|
48
47
|
end
|
49
48
|
end
|
@@ -66,7 +66,7 @@ module ActiveFedora
|
|
66
66
|
|
67
67
|
# Returns the Reflection corresponding to the direct container association that's being filtered
|
68
68
|
def container_reflection
|
69
|
-
@container_reflection ||= @owner.class.
|
69
|
+
@container_reflection ||= @owner.class._reflect_on_association(@reflection.options[:through])
|
70
70
|
end
|
71
71
|
|
72
72
|
# Returns the DirectContainerAssociation corresponding to the direct container that's being filtered
|
@@ -14,11 +14,7 @@ module ActiveFedora
|
|
14
14
|
# If the collection is empty the target is set to an empty array and
|
15
15
|
# the loaded flag is set to true as well.
|
16
16
|
def count_records
|
17
|
-
count =
|
18
|
-
@target.size
|
19
|
-
else
|
20
|
-
@reflection.klass.count(conditions: construct_query)
|
21
|
-
end
|
17
|
+
count = scope.count
|
22
18
|
|
23
19
|
# If there's nothing in the database and @target has no new records
|
24
20
|
# we are certain the current target is an empty array. This is a
|
@@ -60,26 +60,7 @@ module ActiveFedora
|
|
60
60
|
ids = candidate_uris.map { |uri| ActiveFedora::Base.uri_to_id(uri) }
|
61
61
|
results = ActiveFedora::SolrService.query(ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids), rows: 10_000)
|
62
62
|
|
63
|
-
|
64
|
-
ActiveFedora::QueryResultBuilder.classes_from_solr_document(result).any? do |klass|
|
65
|
-
class_ancestors(klass).include? reflection.klass
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
docs.map { |doc| ::RDF::URI.new(ActiveFedora::Base.id_to_uri(doc['id'])) }
|
70
|
-
end
|
71
|
-
|
72
|
-
##
|
73
|
-
# Returns a list of all the ancestor classes up to ActiveFedora::Base including the class itself
|
74
|
-
# @param [Class] klass
|
75
|
-
# @return [Array<Class>]
|
76
|
-
# @example
|
77
|
-
# class Car < ActiveFedora::Base; end
|
78
|
-
# class SuperCar < Car; end
|
79
|
-
# class_ancestors(SuperCar)
|
80
|
-
# # => [SuperCar, Car, ActiveFedora::Base]
|
81
|
-
def class_ancestors(klass)
|
82
|
-
klass.ancestors.select { |k| k.instance_of?(Class) } - [Object, BasicObject]
|
63
|
+
results.select { |result| result.model? reflection.klass }.map(&:rdf_uri)
|
83
64
|
end
|
84
65
|
end
|
85
66
|
end
|
@@ -49,7 +49,7 @@ module ActiveFedora
|
|
49
49
|
deprecation_deprecate :clear_datastreams
|
50
50
|
|
51
51
|
def contains_assertions
|
52
|
-
resource.query(subject: resource, predicate:
|
52
|
+
resource.query(subject: resource, predicate: ::RDF::Vocab::LDP.contains).objects.map(&:to_s)
|
53
53
|
end
|
54
54
|
|
55
55
|
def load_attached_files
|
@@ -110,6 +110,24 @@ module ActiveFedora
|
|
110
110
|
include @generated_attribute_methods
|
111
111
|
end
|
112
112
|
|
113
|
+
# A method name is 'dangerous' if it is already (re)defined by Active Fedora, but
|
114
|
+
# not by any ancestors. (So 'puts' is not dangerous but 'save' is.)
|
115
|
+
def dangerous_attribute_method?(name) # :nodoc:
|
116
|
+
method_defined_within?(name, Base)
|
117
|
+
end
|
118
|
+
|
119
|
+
def method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc:
|
120
|
+
if klass.method_defined?(name) || klass.private_method_defined?(name)
|
121
|
+
if superklass.method_defined?(name) || superklass.private_method_defined?(name)
|
122
|
+
klass.instance_method(name).owner != superklass.instance_method(name).owner
|
123
|
+
else
|
124
|
+
true
|
125
|
+
end
|
126
|
+
else
|
127
|
+
false
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
113
131
|
private
|
114
132
|
|
115
133
|
# @param name [Symbol] name of the attribute to generate
|
@@ -239,7 +239,7 @@ module ActiveFedora
|
|
239
239
|
# @param [String] dsid the datastream id
|
240
240
|
# @return [Class] the class of the datastream
|
241
241
|
def datastream_class_for_name(dsid)
|
242
|
-
reflection =
|
242
|
+
reflection = _reflect_on_association(dsid.to_sym)
|
243
243
|
reflection ? reflection.klass : ActiveFedora::File
|
244
244
|
end
|
245
245
|
|
@@ -75,24 +75,20 @@ module ActiveFedora
|
|
75
75
|
module AutosaveAssociation
|
76
76
|
extend ActiveSupport::Concern
|
77
77
|
|
78
|
-
ASSOCIATION_TYPES =
|
78
|
+
ASSOCIATION_TYPES = [:has_many, :belongs_to, :has_and_belongs_to_many, :directly_contains, :indirectly_contains].freeze
|
79
79
|
|
80
80
|
module AssociationBuilderExtension #:nodoc:
|
81
|
-
def self.
|
82
|
-
|
81
|
+
def self.valid_options
|
82
|
+
[:autosave]
|
83
83
|
end
|
84
84
|
|
85
|
-
def build
|
86
|
-
reflection
|
87
|
-
model.send(:add_autosave_association_callbacks, reflection)
|
88
|
-
reflection
|
85
|
+
def self.build(model, reflection)
|
86
|
+
model.send(:define_autosave_association_callbacks, reflection) if ASSOCIATION_TYPES.include? reflection.macro
|
89
87
|
end
|
90
88
|
end
|
91
89
|
|
92
90
|
included do
|
93
|
-
|
94
|
-
Associations::Builder.const_get(type).send(:include, AssociationBuilderExtension)
|
95
|
-
end
|
91
|
+
Associations::Builder::Association.extensions << AssociationBuilderExtension
|
96
92
|
end
|
97
93
|
|
98
94
|
module ClassMethods
|
@@ -127,7 +123,7 @@ module ActiveFedora
|
|
127
123
|
# the callbacks to get defined multiple times, there are guards that
|
128
124
|
# check if the save or validation methods have already been defined
|
129
125
|
# before actually defining them.
|
130
|
-
def
|
126
|
+
def define_autosave_association_callbacks(reflection)
|
131
127
|
save_method = :"autosave_associated_records_for_#{reflection.name}"
|
132
128
|
validation_method = :"validate_associated_records_for_#{reflection.name}"
|
133
129
|
collection = reflection.collection?
|
@@ -287,7 +283,7 @@ module ActiveFedora
|
|
287
283
|
end
|
288
284
|
|
289
285
|
# reconstruct the scope now that we know the owner's id
|
290
|
-
association.send(:
|
286
|
+
association.send(:reset_scope) if association.respond_to?(:reset_scope)
|
291
287
|
end
|
292
288
|
end
|
293
289
|
|
data/lib/active_fedora/base.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
SOLR_DOCUMENT_ID = "id".freeze unless defined?(SOLR_DOCUMENT_ID) && !SOLR_DOCUMENT_ID.nil?
|
2
|
-
ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
|
3
1
|
require 'active_support/descendants_tracker'
|
4
2
|
require 'active_fedora/errors'
|
5
3
|
require 'active_fedora/log_subscriber'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveFedora
|
2
|
+
# Create model classifiers for resources or solr documents
|
3
|
+
class DefaultModelMapper
|
4
|
+
attr_reader :classifier_class, :solr_field, :predicate
|
5
|
+
|
6
|
+
def initialize(classifier_class: ActiveFedora::ModelClassifier, solr_field: ActiveFedora::QueryResultBuilder::HAS_MODEL_SOLR_FIELD, predicate: ActiveFedora::RDF::Fcrepo::Model.hasModel)
|
7
|
+
@classifier_class = classifier_class
|
8
|
+
@solr_field = solr_field
|
9
|
+
@predicate = predicate
|
10
|
+
end
|
11
|
+
|
12
|
+
def classifier(resource)
|
13
|
+
models = if resource.respond_to? :graph
|
14
|
+
resource.graph.query([nil, predicate, nil]).map { |rg| rg.object.to_s }
|
15
|
+
elsif resource.respond_to? :[]
|
16
|
+
resource[solr_field] || []
|
17
|
+
else
|
18
|
+
[]
|
19
|
+
end
|
20
|
+
|
21
|
+
classifier_class.new(models)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/active_fedora/fedora.rb
CHANGED
@@ -30,7 +30,7 @@ module ActiveFedora
|
|
30
30
|
# things like ldp:IndirectContainers, but it's imposes a significant
|
31
31
|
# performance penalty on every request
|
32
32
|
# @connection ||= InboundRelationConnection.new(CachingConnection.new(authorized_connection))
|
33
|
-
@connection ||= CachingConnection.new(authorized_connection)
|
33
|
+
@connection ||= CachingConnection.new(authorized_connection, omit_ldpr_interaction_model: true)
|
34
34
|
end
|
35
35
|
|
36
36
|
def clean_connection
|
@@ -21,7 +21,7 @@ module ActiveFedora::File::Attributes
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def persisted_size
|
24
|
-
ldp_source.head.
|
24
|
+
ldp_source.head.content_length unless new_record?
|
25
25
|
end
|
26
26
|
|
27
27
|
def dirty_size
|
@@ -60,7 +60,7 @@ module ActiveFedora::File::Attributes
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def links
|
63
|
-
@links ||=
|
63
|
+
@links ||= ldp_source.head.links
|
64
64
|
end
|
65
65
|
|
66
66
|
def default_mime_type
|
@@ -69,12 +69,11 @@ module ActiveFedora::File::Attributes
|
|
69
69
|
|
70
70
|
def fetch_mime_type
|
71
71
|
return default_mime_type if new_record?
|
72
|
-
ldp_source.head.
|
72
|
+
ldp_source.head.content_type
|
73
73
|
end
|
74
74
|
|
75
75
|
def fetch_original_name
|
76
76
|
return if new_record?
|
77
|
-
|
78
|
-
URI.decode(m[:filename])
|
77
|
+
ldp_source.head.content_disposition_filename
|
79
78
|
end
|
80
79
|
end
|
@@ -15,6 +15,16 @@ module ActiveFedora
|
|
15
15
|
autoload :Map
|
16
16
|
end
|
17
17
|
|
18
|
+
included do
|
19
|
+
# Because the previous method of setting indexer was to override
|
20
|
+
# the class method, we must ensure that we aren't using the instance
|
21
|
+
# reader so that the old method still works.
|
22
|
+
class_attribute :indexer, instance_accessor: false
|
23
|
+
|
24
|
+
# This is the default indexer class to use for this model.
|
25
|
+
self.indexer = IndexingService
|
26
|
+
end
|
27
|
+
|
18
28
|
# Return a Hash representation of this object where keys in the hash are appropriate Solr field names.
|
19
29
|
# @param [Hash] _solr_doc (optional) Hash to insert the fields into
|
20
30
|
# @param [Hash] _opts (optional)
|
@@ -37,13 +47,13 @@ module ActiveFedora
|
|
37
47
|
# Determines whether a create operation causes a solr index of this object by default.
|
38
48
|
# Override this if you need different behavior.
|
39
49
|
def create_needs_index?
|
40
|
-
|
50
|
+
ActiveFedora.enable_solr_updates?
|
41
51
|
end
|
42
52
|
|
43
53
|
# Determines whether an update operation causes a solr index of this object by default.
|
44
54
|
# Override this if you need different behavior
|
45
55
|
def update_needs_index?
|
46
|
-
|
56
|
+
ActiveFedora.enable_solr_updates?
|
47
57
|
end
|
48
58
|
|
49
59
|
private
|
@@ -72,10 +82,6 @@ module ActiveFedora
|
|
72
82
|
end
|
73
83
|
end
|
74
84
|
|
75
|
-
def indexer
|
76
|
-
IndexingService
|
77
|
-
end
|
78
|
-
|
79
85
|
def reindex_everything
|
80
86
|
descendants = descendant_uris(ActiveFedora::Base.id_to_uri(''))
|
81
87
|
descendants.shift # Discard the root uri
|
@@ -104,7 +110,7 @@ module ActiveFedora
|
|
104
110
|
resource = Ldp::Resource::RdfSource.new(ActiveFedora.fedora.connection, uri)
|
105
111
|
# GET could be slow if it's a big resource, we're using HEAD to avoid this problem,
|
106
112
|
# but this causes more requests to Fedora.
|
107
|
-
return [] unless
|
113
|
+
return [] unless resource.head.rdf_source?
|
108
114
|
immediate_descendant_uris = resource.graph.query(predicate: ::RDF::Vocab::LDP.contains).map { |descendant| descendant.object.to_s }
|
109
115
|
all_descendants_uris = [uri]
|
110
116
|
immediate_descendant_uris.each do |descendant_uri|
|