dor-services 5.14.2 → 5.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be30d76033b050011082caadf9ec5a3da75e412f
4
- data.tar.gz: 6778987396c62b992630663176f239f68bec053a
3
+ metadata.gz: 78095de3ddf6f320e3de915092a37794f10f93b3
4
+ data.tar.gz: e3acad6df212a6c702317a40ee59828add2a68ce
5
5
  SHA512:
6
- metadata.gz: 7f641683e2dbcbe2fda8bb56a8102907795445b0be294ef5340671154b46db9954c342aad32b559e0e32631516ef9d9325c025d3393482a34056505f340dc9b7
7
- data.tar.gz: 052a81775ef955913deca327821321e6abbb215894e6420fcc0e05440e12775c454d48eefffe171abdd3839148dedb71fe6f67591af72e6096723927cd971b62
6
+ metadata.gz: 65eb517399834470be6daea7a7122dc2a20da5dc8439635f54130012e71c77202cddb42a3739458db1ff19272624b38f87b07c5d6798cf8887066c54dd841d6d
7
+ data.tar.gz: a26b1d0b4a22d1f3c3417c6b5485713ac64788c8bda10db432dce6b18864792fe82977a4526cc017f90a39221094b954ea9d130eb718ea6794340429a659f129
@@ -4,6 +4,7 @@ require 'modsulator'
4
4
  require 'dor/utils/sdr_client'
5
5
 
6
6
  module Dor
7
+ extend ActiveSupport::Autoload
7
8
  @@registered_classes = {}
8
9
  mattr_reader :registered_classes
9
10
  INDEX_VERSION_FIELD = 'dor_services_version_ssi'.freeze
@@ -19,12 +20,9 @@ module Dor
19
20
  # index is missing the objectType property.
20
21
  # @param [String] pid The object's PID
21
22
  def load_instance(pid)
22
- ensure_models_loaded!
23
23
  obj = Dor::Abstract.find pid, cast: false
24
24
  return nil if obj.new_record?
25
- object_type = obj.identityMetadata.objectType.first
26
- object_class = registered_classes[object_type] || Dor::Item
27
- obj.adapt_to(object_class)
25
+ obj.adapt_to_cmodel
28
26
  end
29
27
 
30
28
  # Get objectType information from solr and load the correct class the first time,
@@ -40,7 +38,6 @@ module Dor
40
38
  # TODO: return enumerable and lazy load_instance
41
39
  # TODO: restrict fieldlist (fl) for non-:lightweight queries
42
40
  def find_all(query, opts = {})
43
- ensure_models_loaded!
44
41
  resp = SearchService.query query, opts
45
42
  resp.docs.collect do |solr_doc|
46
43
  doc_version = solr_doc[INDEX_VERSION_FIELD].first rescue '0.0.0'
@@ -60,8 +57,10 @@ module Dor
60
57
  end
61
58
  end
62
59
 
60
+ # @deprecated
63
61
  def ensure_models_loaded!
64
- [Item, Set, Collection, AdminPolicyObject, WorkflowObject]
62
+ ActiveSupport::Deprecation.warn 'Dor.ensure_models_loaded! is unnecessary and has been deprecated.'
63
+ eager_load!
65
64
  end
66
65
 
67
66
  def root
@@ -132,13 +131,16 @@ module Dor
132
131
  autoload :Releaseable, 'dor/models/releaseable'
133
132
  autoload :Rightsable, 'dor/models/rightsable'
134
133
 
135
- # ActiveFedora Classes
136
- autoload :Abstract, 'dor/models/item'
137
- autoload :Item, 'dor/models/item'
138
- autoload :Set, 'dor/models/set'
139
- autoload :Collection, 'dor/models/collection'
140
- autoload :AdminPolicyObject, 'dor/models/admin_policy_object'
141
- autoload :WorkflowObject, 'dor/models/workflow_object'
134
+ eager_autoload do
135
+ # ActiveFedora Classes
136
+ autoload :Abstract, 'dor/models/item'
137
+ autoload :Agreement, 'dor/models/agreement'
138
+ autoload :Item, 'dor/models/item'
139
+ autoload :Set, 'dor/models/set'
140
+ autoload :Collection, 'dor/models/collection'
141
+ autoload :AdminPolicyObject, 'dor/models/admin_policy_object'
142
+ autoload :WorkflowObject, 'dor/models/workflow_object'
143
+ end
142
144
 
143
145
  # Services
144
146
  autoload :SearchService, 'dor/services/search_service'
@@ -167,4 +169,6 @@ module Dor
167
169
  autoload :Process, 'dor/workflow/process'
168
170
  autoload :Document, 'dor/workflow/document'
169
171
  end
172
+
173
+ eager_load!
170
174
  end
@@ -0,0 +1,3 @@
1
+ class Dor::Agreement < ::Dor::Item
2
+ has_object_type 'agreement'
3
+ end
@@ -224,6 +224,19 @@ module Dor
224
224
  result.nil? ? druid : result[0] # if no matches, return the string passed in, otherwise return the match
225
225
  end
226
226
 
227
+ # Override ActiveFedora::Core#adapt_to_cmodel (used with associations, among other places) to
228
+ # preferentially use the objectType asserted in the identityMetadata.
229
+ def adapt_to_cmodel
230
+ object_type = identityMetadata.objectType.first
231
+ object_class = Dor.registered_classes[object_type]
232
+
233
+ if object_class
234
+ self.instance_of?(object_class) ? self : self.adapt_to(object_class)
235
+ else
236
+ super
237
+ end
238
+ end
239
+
227
240
  private
228
241
 
229
242
  def solrize_related_obj_titles(solr_doc, relationships, title_hash, union_field_name, nonhydrus_field_name, hydrus_field_name)
@@ -46,7 +46,6 @@ module Dor
46
46
  # @option params [Array<String>] :initiate_workflow workflow_ids
47
47
  # @option params [Array] :tags
48
48
  def register_object(params = {})
49
- Dor.ensure_models_loaded!
50
49
  [:object_type, :label].each do |required_param|
51
50
  raise Dor::ParameterError, "#{required_param.inspect} must be specified in call to #{name}.register_object" unless params[required_param]
52
51
  end
@@ -1,3 +1,3 @@
1
1
  module Dor
2
- VERSION = '5.14.2'.freeze
2
+ VERSION = '5.15.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.14.2
4
+ version: 5.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Klein
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2016-11-08 00:00:00.000000000 Z
17
+ date: 2016-11-10 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora
@@ -614,6 +614,7 @@ files:
614
614
  - lib/dor/migrations/processable/unify_workflows.rb
615
615
  - lib/dor/migrations/versionable/add_missing_version_md.rb
616
616
  - lib/dor/models/admin_policy_object.rb
617
+ - lib/dor/models/agreement.rb
617
618
  - lib/dor/models/assembleable.rb
618
619
  - lib/dor/models/collection.rb
619
620
  - lib/dor/models/contentable.rb
@@ -682,9 +683,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
682
683
  version: 1.3.6
683
684
  requirements: []
684
685
  rubyforge_project:
685
- rubygems_version: 2.6.7
686
+ rubygems_version: 2.5.1
686
687
  signing_key:
687
688
  specification_version: 4
688
689
  summary: Ruby implmentation of DOR services used by the SULAIR Digital Library
689
690
  test_files: []
690
- has_rdoc: