hydra-pcdm 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -0
  3. data/Gemfile +0 -4
  4. data/README.md +2 -2
  5. data/hydra-pcdm.gemspec +2 -1
  6. data/lib/hydra/pcdm.rb +21 -30
  7. data/lib/hydra/pcdm/ancestor_checker.rb +18 -0
  8. data/lib/hydra/pcdm/collection_indexer.rb +2 -2
  9. data/lib/hydra/pcdm/deep_member_iterator.rb +31 -0
  10. data/lib/hydra/pcdm/models/concerns/collection_behavior.rb +20 -57
  11. data/lib/hydra/pcdm/models/concerns/object_behavior.rb +12 -37
  12. data/lib/hydra/pcdm/models/concerns/pcdm_behavior.rb +34 -0
  13. data/lib/hydra/pcdm/object_indexer.rb +1 -1
  14. data/lib/hydra/pcdm/services/file/get_mime_type.rb +1 -1
  15. data/lib/hydra/pcdm/validators.rb +8 -0
  16. data/lib/hydra/pcdm/validators/ancestor_validator.rb +26 -0
  17. data/lib/hydra/pcdm/validators/composite_validator.rb +17 -0
  18. data/lib/hydra/pcdm/validators/pcdm_object_validator.rb +9 -0
  19. data/lib/hydra/pcdm/validators/pcdm_validator.rb +9 -0
  20. data/lib/hydra/pcdm/version.rb +1 -1
  21. data/lib/hydra/pcdm/vocab/pcdm_terms.rb +1 -1
  22. data/spec/hydra/pcdm/ancestor_checker_spec.rb +29 -0
  23. data/spec/hydra/pcdm/collection_indexer_spec.rb +11 -11
  24. data/spec/hydra/pcdm/deep_member_iterator_spec.rb +52 -0
  25. data/spec/hydra/pcdm/models/collection_spec.rb +691 -17
  26. data/spec/hydra/pcdm/models/file_spec.rb +16 -0
  27. data/spec/hydra/pcdm/models/object_spec.rb +576 -27
  28. data/spec/hydra/pcdm/object_indexer_spec.rb +6 -6
  29. data/spec/spec_helper.rb +8 -1
  30. metadata +31 -52
  31. data/lib/hydra/pcdm/services/collection/add_collection.rb +0 -20
  32. data/lib/hydra/pcdm/services/collection/add_object.rb +0 -19
  33. data/lib/hydra/pcdm/services/collection/add_related_object.rb +0 -21
  34. data/lib/hydra/pcdm/services/collection/get_collections.rb +0 -18
  35. data/lib/hydra/pcdm/services/collection/get_objects.rb +0 -18
  36. data/lib/hydra/pcdm/services/collection/get_related_objects.rb +0 -17
  37. data/lib/hydra/pcdm/services/collection/remove_collection.rb +0 -36
  38. data/lib/hydra/pcdm/services/collection/remove_object.rb +0 -43
  39. data/lib/hydra/pcdm/services/collection/remove_related_object.rb +0 -36
  40. data/lib/hydra/pcdm/services/object/add_object.rb +0 -20
  41. data/lib/hydra/pcdm/services/object/add_related_object.rb +0 -21
  42. data/lib/hydra/pcdm/services/object/get_objects.rb +0 -18
  43. data/lib/hydra/pcdm/services/object/get_related_objects.rb +0 -17
  44. data/lib/hydra/pcdm/services/object/remove_object.rb +0 -43
  45. data/lib/hydra/pcdm/services/object/remove_related_object.rb +0 -36
  46. data/spec/hydra/pcdm/services/collection/add_collection_spec.rb +0 -197
  47. data/spec/hydra/pcdm/services/collection/add_object_spec.rb +0 -132
  48. data/spec/hydra/pcdm/services/collection/add_related_object_spec.rb +0 -94
  49. data/spec/hydra/pcdm/services/collection/get_collections_spec.rb +0 -40
  50. data/spec/hydra/pcdm/services/collection/get_objects_spec.rb +0 -40
  51. data/spec/hydra/pcdm/services/collection/get_related_objects_spec.rb +0 -37
  52. data/spec/hydra/pcdm/services/collection/remove_collection_spec.rb +0 -143
  53. data/spec/hydra/pcdm/services/collection/remove_object_spec.rb +0 -180
  54. data/spec/hydra/pcdm/services/collection/remove_related_object_spec.rb +0 -146
  55. data/spec/hydra/pcdm/services/file/add_type_spec.rb +0 -19
  56. data/spec/hydra/pcdm/services/object/add_object_spec.rb +0 -186
  57. data/spec/hydra/pcdm/services/object/add_related_object_spec.rb +0 -94
  58. data/spec/hydra/pcdm/services/object/get_objects_spec.rb +0 -33
  59. data/spec/hydra/pcdm/services/object/get_related_objects_spec.rb +0 -39
  60. data/spec/hydra/pcdm/services/object/remove_object_spec.rb +0 -158
  61. data/spec/hydra/pcdm/services/object/remove_related_object_spec.rb +0 -126
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c4ca4330987a12626e2dd8a45e54d08e83b8c07
4
- data.tar.gz: 99e3953956fe7a5a45b6c14bbee233d14e32eb2a
3
+ metadata.gz: c08bc42e4a5ea8d987f0830db5474b9e2d7c1ada
4
+ data.tar.gz: 7f3e582637ddb0254b8cc399ab71d45f9f7ac482
5
5
  SHA512:
6
- metadata.gz: 5a0af66d3e277f5d2f05dbb2e96043742f1faeec169641cf64058c3a89dc7762bfd93ca7ed48055c621fa0cc3a463b8492d5dc3d0351a996e248a138c081ae66
7
- data.tar.gz: 43f4e5f13d121da66b59c54a496b538d2cd8bbb74b4be5fa8bfb60944f793d485313e2aa1d0aec23e5bceb6dbd0a6f4ae09f7eaaff141f355ff913ff650d31bc
6
+ metadata.gz: 70d9932eddb9b3c3581ef2d14e7628fa15b6034d4dc607d3d92df74ea92ce19d40b5f5712b6eb2ef8421f3f4cd59a382dc683368eec2a2a123f8a4790bdcd913
7
+ data.tar.gz: b5b4827cc4a421cb9f35821d48504c0cbf4c072e191fad3bf29bcdbcdcb76275de3846c0e124f60e47c45d606a8a4b80967f6ee2cb780c29a03a1c84009e41a3
data/.travis.yml CHANGED
@@ -5,6 +5,8 @@ bundler_args: --without debug
5
5
  env:
6
6
  global:
7
7
  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
8
+ jdk:
9
+ - oraclejdk8
8
10
  rvm:
9
11
  - 2.1
10
12
  - 2.2
@@ -12,3 +14,5 @@ rvm:
12
14
  matrix:
13
15
  allow_failures:
14
16
  - rvm: jruby-head
17
+ jdk:
18
+ - oraclejdk8
data/Gemfile CHANGED
@@ -1,9 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activefedora-aggregation', github: 'projecthydra-labs/activefedora-aggregation'
4
- gem 'active-fedora', github: 'projecthydra/active_fedora'
5
-
6
-
7
3
  unless ENV['CI']
8
4
  gem 'pry'
9
5
  gem 'pry-byebug'
data/README.md CHANGED
@@ -33,12 +33,12 @@ We are using [Web ACL](http://www.w3.org/wiki/WebAccessControl) as implemented b
33
33
 
34
34
  ## PCDM Model
35
35
 
36
- Reference: [Portland Common Data Model](https://wiki.duraspace.org/x/9IoOB)
36
+ Reference: [Portland Common Data Model](https://github.com/duraspace/pcdm/wiki)
37
37
 
38
38
 
39
39
  ### Model Definition
40
40
 
41
- ![PCDM Model Definition](https://wiki.duraspace.org/download/attachments/68061940/coll-object-file.png?version=1&modificationDate=1425932362178&api=v2)
41
+ ![PCDM Model Definition](https://raw.githubusercontent.com/wiki/duraspace/pcdm/images/coll-object-file.png)
42
42
 
43
43
 
44
44
  ### Example
data/hydra-pcdm.gemspec CHANGED
@@ -19,7 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency 'activefedora-aggregation', '~> 0.2.0'
22
+ spec.add_dependency 'activefedora-aggregation', '~> 0.4'
23
+ spec.add_dependency 'mime-types', '>= 1'
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1.6'
25
26
  spec.add_development_dependency 'jettywrapper', '>= 2.0.0'
data/lib/hydra/pcdm.rb CHANGED
@@ -1,4 +1,7 @@
1
1
  require 'active_support'
2
+ require 'mime/types'
3
+ require 'active_fedora/aggregation'
4
+
2
5
 
3
6
  module Hydra
4
7
  module PCDM
@@ -10,59 +13,47 @@ module Hydra
10
13
  autoload :SweetjplVocabularies, 'hydra/pcdm/vocab/sweetjpl_terms'
11
14
 
12
15
  # models
13
- autoload :Collection, 'hydra/pcdm/models/collection'
14
- autoload :Object, 'hydra/pcdm/models/object'
15
- autoload :File, 'hydra/pcdm/models/file'
16
+ autoload_under 'models' do
17
+ autoload :Collection
18
+ autoload :Object
19
+ autoload :File
20
+ end
16
21
 
17
22
  # behavior concerns
18
- autoload :CollectionBehavior, 'hydra/pcdm/models/concerns/collection_behavior'
19
- autoload :ObjectBehavior, 'hydra/pcdm/models/concerns/object_behavior'
23
+ autoload_under 'models/concerns' do
24
+ autoload :CollectionBehavior
25
+ autoload :ObjectBehavior
26
+ autoload :PcdmBehavior
27
+ end
20
28
 
21
29
  autoload :CollectionIndexer
22
30
  autoload :ObjectIndexer
23
31
 
24
- # collection services
25
- autoload :AddCollectionToCollection, 'hydra/pcdm/services/collection/add_collection'
26
- autoload :AddObjectToCollection, 'hydra/pcdm/services/collection/add_object'
27
- autoload :AddRelatedObjectToCollection, 'hydra/pcdm/services/collection/add_related_object'
28
- autoload :GetCollectionsFromCollection, 'hydra/pcdm/services/collection/get_collections'
29
- autoload :GetObjectsFromCollection, 'hydra/pcdm/services/collection/get_objects'
30
- autoload :GetRelatedObjectsFromCollection, 'hydra/pcdm/services/collection/get_related_objects'
31
- autoload :RemoveCollectionFromCollection, 'hydra/pcdm/services/collection/remove_collection'
32
- autoload :RemoveObjectFromCollection, 'hydra/pcdm/services/collection/remove_object'
33
- autoload :RemoveRelatedObjectFromCollection, 'hydra/pcdm/services/collection/remove_related_object'
34
-
35
32
  # file services
36
33
  autoload :AddTypeToFile, 'hydra/pcdm/services/file/add_type'
37
34
  autoload :GetMimeTypeForFile, 'hydra/pcdm/services/file/get_mime_type'
38
35
 
36
+ # Iterators
37
+ autoload :DeepMemberIterator, 'hydra/pcdm/deep_member_iterator'
39
38
 
40
- # object services
41
- autoload :AddFileToObject, 'hydra/pcdm/services/object/add_file'
42
- autoload :AddObjectToObject, 'hydra/pcdm/services/object/add_object'
43
- autoload :AddRelatedObjectToObject, 'hydra/pcdm/services/object/add_related_object'
44
- autoload :CreateObject, 'hydra/pcdm/services/object/create'
45
- autoload :GetObjectsFromObject, 'hydra/pcdm/services/object/get_objects'
46
- autoload :GetRelatedObjectsFromObject, 'hydra/pcdm/services/object/get_related_objects'
47
- autoload :GetFilesFromObject, 'hydra/pcdm/services/object/get_collections'
48
- autoload :RemoveObjectFromObject, 'hydra/pcdm/services/object/remove_object'
49
- autoload :RemoveRelatedObjectFromObject, 'hydra/pcdm/services/object/remove_related_object'
50
-
39
+ # Associations
40
+ autoload :AncestorChecker, 'hydra/pcdm/ancestor_checker'
41
+ autoload :Validators, 'hydra/pcdm/validators'
51
42
 
52
43
  # model validations
53
44
  def self.collection? collection
54
45
  return false unless collection.respond_to? :type
55
- collection.type.include? RDFVocabularies::PCDMTerms.Collection
46
+ Array(collection.type).include? RDFVocabularies::PCDMTerms.Collection
56
47
  end
57
48
 
58
49
  def self.object? object
59
50
  return false unless object.respond_to? :type
60
- object.type.include? RDFVocabularies::PCDMTerms.Object
51
+ Array(object.type).include? RDFVocabularies::PCDMTerms.Object
61
52
  end
62
53
 
63
54
  def self.file? file
64
55
  return false unless file.respond_to? :metadata_node
65
- file.metadata_node.type.include? RDFVocabularies::PCDMTerms.File
56
+ Array(file.metadata_node.type).include? RDFVocabularies::PCDMTerms.File
66
57
  end
67
58
 
68
59
  end
@@ -0,0 +1,18 @@
1
+ module Hydra::PCDM
2
+ ##
3
+ # Checks whether or not one object is an ancestor of another.
4
+ class AncestorChecker
5
+ attr_reader :record
6
+
7
+ # @param [ActiveFedora::Base] record The object which may have ancestors.
8
+ def initialize(record)
9
+ @record = record
10
+ end
11
+
12
+ # @param [#members] potential_ancestor Object which may be the ancestor of
13
+ # the initialized record.
14
+ def ancestor?(potential_ancestor)
15
+ record == potential_ancestor || Hydra::PCDM::DeepMemberIterator.new(potential_ancestor).include?(record)
16
+ end
17
+ end
18
+ end
@@ -3,8 +3,8 @@ module Hydra::PCDM
3
3
 
4
4
  def generate_solr_document
5
5
  super.tap do |solr_doc|
6
- solr_doc["members_ssim"] = object.member_ids
7
- solr_doc["child_collections_ssim"] = object.child_collections.map { |o| o.id }
6
+ solr_doc["member_ids_ssim"] = object.member_ids
7
+ solr_doc["child_collection_ids_ssim"] = object.child_collection_ids
8
8
  end
9
9
  end
10
10
 
@@ -0,0 +1,31 @@
1
+ module Hydra::PCDM
2
+ ##
3
+ # Iterates over a record's members and all of their members in a breadth-first
4
+ # search.
5
+ class DeepMemberIterator
6
+ include Enumerable
7
+ attr_reader :record
8
+ # @param [#members] record The object whose members are iterated across.
9
+ def initialize(record)
10
+ @record = HasMembers.new(record)
11
+ end
12
+
13
+ def each
14
+ record.members.each do |member|
15
+ yield member
16
+ end
17
+ record.members.each do |member|
18
+ DeepMemberIterator.new(member).each do |deep_member|
19
+ yield deep_member
20
+ end
21
+ end
22
+ end
23
+ end
24
+ ##
25
+ # Small decorator to ensure that #members isn't undefined.
26
+ class HasMembers < SimpleDelegator
27
+ def members
28
+ __getobj__.try(:members) || []
29
+ end
30
+ end
31
+ end
@@ -1,79 +1,42 @@
1
- require 'active_fedora/aggregation'
2
-
3
1
  module Hydra::PCDM
2
+
3
+ # behavior:
4
+ # 1) Hydra::PCDM::Collection can aggregate (pcdm:hasMember) Hydra::PCDM::Collection (no infinite loop, e.g., A -> B -> C -> A)
5
+ # 2) Hydra::PCDM::Collection can aggregate (pcdm:hasMember) Hydra::PCDM::Object
6
+ # 3) Hydra::PCDM::Collection can aggregate (ore:aggregates) Hydra::PCDM::Object (Object related to the Collection)
7
+
8
+ # 4) Hydra::PCDM::Collection can NOT aggregate non-PCDM object
9
+ # 5) Hydra::PCDM::Collection can NOT contain (pcdm:hasFile) Hydra::PCDM::File
10
+
11
+ # 6) Hydra::PCDM::Collection can have descriptive metadata
12
+ # 7) Hydra::PCDM::Collection can have access metadata
13
+ #
4
14
  module CollectionBehavior
5
15
  extend ActiveSupport::Concern
6
16
 
7
17
  included do
8
18
  type RDFVocabularies::PCDMTerms.Collection
19
+ include ::Hydra::PCDM::PcdmBehavior
9
20
 
10
- aggregates :members, predicate: RDFVocabularies::PCDMTerms.hasMember,
11
- class_name: "ActiveFedora::Base"
12
-
13
- indirectly_contains :related_objects, has_member_relation: RDF::Vocab::ORE.aggregates,
14
- inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: "ActiveFedora::Base",
15
- through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target
21
+ filters_association :members, as: :child_collections, condition: :pcdm_collection?
16
22
  end
17
23
 
18
24
  module ClassMethods
19
25
  def indexer
20
26
  Hydra::PCDM::CollectionIndexer
21
27
  end
22
- end
23
-
24
- # behavior:
25
- # 1) Hydra::PCDM::Collection can aggregate (pcdm:hasMember) Hydra::PCDM::Collection (no infinite loop, e.g., A -> B -> C -> A)
26
- # 2) Hydra::PCDM::Collection can aggregate (pcdm:hasMember) Hydra::PCDM::Object
27
- # 3) Hydra::PCDM::Collection can aggregate (ore:aggregates) Hydra::PCDM::Object (Object related to the Collection)
28
-
29
- # 4) Hydra::PCDM::Collection can NOT aggregate non-PCDM object
30
- # 5) Hydra::PCDM::Collection can NOT contain (pcdm:hasFile) Hydra::PCDM::File
31
-
32
- # 6) Hydra::PCDM::Collection can have descriptive metadata
33
- # 7) Hydra::PCDM::Collection can have access metadata
34
-
35
- def child_collections= collections
36
- raise ArgumentError, "each collection must be a pcdm collection" unless collections.all? { |c| Hydra::PCDM.collection? c }
37
- raise ArgumentError, "a collection can't be an ancestor of itself" if collection_ancestor?(collections)
38
- self.members = objects + collections
39
- end
40
-
41
- def child_collections
42
- members.to_a.select { |m| Hydra::PCDM.collection? m }
43
- end
44
-
45
- def objects= objects
46
- raise ArgumentError, "each object must be a pcdm object" unless objects.all? { |o| Hydra::PCDM.object? o }
47
- self.members = child_collections + objects
48
- end
49
-
50
- def objects
51
- members.to_a.select { |m| Hydra::PCDM.object? m }
52
- end
53
-
54
- def collection_ancestor? collections
55
- collections.each do |check|
56
- return true if check.id == self.id
57
- return true if ancestor?(check)
28
+
29
+ def type_validator
58
30
  end
59
- false
60
31
  end
61
32
 
62
- def ancestor? collection
63
- return true if collection.id == self.id
64
- return false if collection.child_collections.empty?
65
- current_collections = collection.child_collections
66
- next_batch = []
67
- while !current_collections.empty? do
68
- current_collections.each do |c|
69
- return true if c.id == self.id
70
- next_batch += c.child_collections
71
- end
72
- current_collections = next_batch
73
- end
33
+ def pcdm_object?
74
34
  false
75
35
  end
76
36
 
37
+ def pcdm_collection?
38
+ true
39
+ end
77
40
  end
78
41
  end
79
42
 
@@ -1,5 +1,3 @@
1
- require 'active_fedora/aggregation'
2
-
3
1
  module Hydra::PCDM
4
2
 
5
3
  # behavior:
@@ -16,56 +14,34 @@ module Hydra::PCDM
16
14
 
17
15
  included do
18
16
  type RDFVocabularies::PCDMTerms.Object
19
-
20
- aggregates :members, predicate: RDFVocabularies::PCDMTerms.hasMember,
21
- class_name: "ActiveFedora::Base"
22
-
23
- indirectly_contains :related_objects, has_member_relation: RDF::Vocab::ORE.aggregates,
24
- inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: "ActiveFedora::Base",
25
- through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target
17
+ include ::Hydra::PCDM::PcdmBehavior
26
18
 
27
19
  directly_contains :files, has_member_relation: RDFVocabularies::PCDMTerms.hasFile,
28
20
  class_name: "Hydra::PCDM::File"
29
-
30
21
  end
31
22
 
32
23
  module ClassMethods
33
24
  def indexer
34
25
  Hydra::PCDM::ObjectIndexer
35
26
  end
36
- end
37
27
 
38
- def objects= objects
39
- raise ArgumentError, "each object must be a pcdm object" unless objects.all? { |o| Hydra::PCDM.object? o }
40
- raise ArgumentError, "an object can't be an ancestor of itself" if object_ancestor?(objects)
41
- self.members = objects
28
+ def type_validator
29
+ @type_validator ||= Validators::PCDMObjectValidator
30
+ end
42
31
  end
43
32
 
44
- def objects
45
- members.to_a.select { |m| Hydra::PCDM.object? m }
33
+ # @return [Boolean] whether this instance is a PCDM Object.
34
+ def pcdm_object?
35
+ true
46
36
  end
47
37
 
48
- def object_ancestor? objects
49
- objects.each do |check|
50
- return true if check.id == self.id
51
- return true if ancestor?(check)
52
- end
38
+ # @return [Boolean] whether this instance is a PCDM Collection.
39
+ def pcdm_collection?
53
40
  false
54
41
  end
55
42
 
56
- def ancestor? object
57
- return true if object.id == self.id
58
- return false if object.objects.empty?
59
- current_objects = object.objects
60
- next_batch = []
61
- while !current_objects.empty? do
62
- current_objects.each do |c|
63
- return true if c.id == self.id
64
- next_batch += c.objects
65
- end
66
- current_objects = next_batch
67
- end
68
- false
43
+ def parent_objects
44
+ aggregated_by.select(&:pcdm_object?)
69
45
  end
70
46
 
71
47
  def contains= files
@@ -81,7 +57,7 @@ module Hydra::PCDM
81
57
  # filter_files_by_type(::RDF::URI("http://pcdm.org/ExtractedText"))
82
58
  def filter_files_by_type uri
83
59
  self.files.reject do |file|
84
- file.metadata_node.query(predicate: RDF.type, object: uri).map(&:object).empty?
60
+ !file.metadata_node.type.include?(uri)
85
61
  end
86
62
  end
87
63
 
@@ -98,7 +74,6 @@ module Hydra::PCDM
98
74
  return matching_files.first
99
75
  end
100
76
  end
101
-
102
77
  end
103
78
  end
104
79
 
@@ -0,0 +1,34 @@
1
+ module Hydra::PCDM
2
+ module PcdmBehavior
3
+ extend ActiveSupport::Concern
4
+ included do
5
+ aggregates :members, predicate: RDFVocabularies::PCDMTerms.hasMember,
6
+ class_name: "ActiveFedora::Base",
7
+ type_validator: type_validator
8
+ filters_association :members, as: :child_objects, condition: :pcdm_object?
9
+ indirectly_contains :related_objects, has_member_relation: RDF::Vocab::ORE.aggregates,
10
+ inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: "ActiveFedora::Base",
11
+ through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target,
12
+ type_validator: Validators::PCDMObjectValidator
13
+ end
14
+
15
+ module ClassMethods
16
+ def type_validator
17
+ @type_validator ||= Validators::CompositeValidator.new(
18
+ super,
19
+ Validators::PCDMValidator,
20
+ Validators::AncestorValidator
21
+ )
22
+ end
23
+ end
24
+
25
+ def parents
26
+ aggregated_by
27
+ end
28
+
29
+ def parent_collections
30
+ aggregated_by.select(&:pcdm_collection?)
31
+ end
32
+
33
+ end
34
+ end
@@ -2,7 +2,7 @@ module Hydra::PCDM
2
2
  class ObjectIndexer < ActiveFedora::IndexingService
3
3
  def generate_solr_document
4
4
  super.tap do |solr_doc|
5
- solr_doc["objects_ssim"] = object.objects.map { |o| o.id }
5
+ solr_doc["child_object_ids_ssim"] = object.child_object_ids
6
6
  end
7
7
  end
8
8