active-fedora 13.2.0 → 13.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00a0ee2d4db27136d4c181eb008490eecab14d91894881bf7d2d8c730ea4820a
4
- data.tar.gz: edcf4cf277ccaa6d284e8aad6c8a3cb4c418e88010caa35959316bb0659c77cf
3
+ metadata.gz: e04e045acabedcf73c91fd93413d63e02d8548073cd938e0579bcfb65cf8c82f
4
+ data.tar.gz: a66e8b81d3d27f5858dbb1c5de880c69e6c6f4e1f13d3f11191d174788a2769b
5
5
  SHA512:
6
- metadata.gz: 18a144b467bd18f7ca1d9cccce519d32402580986f8d7b917306f029f25048d245226b7c25dfb36625428f197942eca236cbc82702848695447b90c2a44dda73
7
- data.tar.gz: '089c1166e138e0e861f341862cdd4967f048356c55de015e96b1f611113d64b85c0df4900be47e79b8c1db8f45585ee9e5deb2739b86aae8a2800737d380bbb2'
6
+ metadata.gz: 39a8f3d9c0a7da3dfa15b60e315b93f7c947326b46a59f343d78e88eb21ac479dbe1e93d08e340549caecb7b2ba07d0f6ae9817524d03addfc635a87ff5bc37c
7
+ data.tar.gz: 1f08ff94aa74c88e7c554b4a3378c807e1558e164cfa561db608caf3e9ec97b7af3a7d013018ce54cefa7413fd8da98594de306cd7791e9771e71272241a2b0e
data/.circleci/config.yml CHANGED
@@ -21,7 +21,17 @@ jobs:
21
21
  RAILS_VERSION: << parameters.rails_version >>
22
22
  steps:
23
23
  - samvera/cached_checkout
24
-
24
+ - checkout
25
+ - run:
26
+ name: Check for 'master' branch
27
+ command: |
28
+ git fetch --all --quiet --prune --prune-tags
29
+ if [[ -n "$(git branch --all --list master */master)" ]]; then
30
+ echo "A branch named 'master' was found. Please remove it."
31
+ echo "$(git branch --all --list master */master)"
32
+ fi
33
+ [[ -z "$(git branch --all --list master */master)" ]]
34
+
25
35
  - samvera/bundle_for_gem:
26
36
  ruby_version: << parameters.ruby_version >>
27
37
  bundler_version: << parameters.bundler_version >>
@@ -21,7 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'faraday', '~> 0.12'
22
22
  s.add_dependency 'faraday-encoding', '>= 0.0.5'
23
23
  s.add_dependency "ldp", '>= 0.7.0', '< 2'
24
- s.add_dependency 'rdf-vocab', '< 3.1.5'
25
24
  s.add_dependency 'rsolr', '>= 1.1.2', '< 3'
26
25
  s.add_dependency "ruby-progressbar", '~> 1.0'
27
26
 
@@ -29,6 +28,7 @@ Gem::Specification.new do |s|
29
28
  s.add_development_dependency 'fcrepo_wrapper', '~> 0.2'
30
29
  s.add_development_dependency "github_changelog_generator"
31
30
  s.add_development_dependency "rdoc"
31
+ s.add_development_dependency "psych", "< 4" # Restricted because 4.0+ do not work with rubocop 0.56.x
32
32
  s.add_development_dependency "rails"
33
33
  s.add_development_dependency "rake"
34
34
  s.add_development_dependency "rspec", "~> 3.5"
data/config/fedora.yml CHANGED
@@ -1,14 +1,14 @@
1
1
  development:
2
2
  user: fedoraAdmin
3
3
  password: fedoraAdmin
4
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || ENV['FCREPO_PORT'] || 8984 %>/rest
4
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || ENV['FCREPO_PORT'] || 8984 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
5
5
  base_path: <%= ENV['FCREPO_BASE_PATH'] || '/dev' %>
6
6
  test:
7
7
  user: fedoraAdmin
8
8
  password: fedoraAdmin
9
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_TEST_PORT'] || ENV['FCREPO_PORT'] || 8986 %>/rest
9
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_TEST_PORT'] || ENV['FCREPO_PORT'] || 8986 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
10
10
  base_path: <%= ENV['FCREPO_BASE_PATH'] || '/test' %>
11
11
  production:
12
12
  user: fedoraAdmin
13
13
  password: fedoraAdmin
14
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_PORT'] || 8983 %>/rest
14
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_PORT'] || 8983 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
@@ -2,7 +2,7 @@ module ActiveFedora::Core
2
2
  class FedoraIdTranslator
3
3
  SLASH = '/'.freeze
4
4
  def self.call(id)
5
- id = URI.escape(id, '[]'.freeze)
5
+ id = URI::DEFAULT_PARSER.escape(id, '[]'.freeze)
6
6
  id = "/#{id}" unless id.start_with? SLASH
7
7
  unless ActiveFedora.fedora.base_path == SLASH || id.start_with?("#{ActiveFedora.fedora.base_path}/")
8
8
  id = ActiveFedora.fedora.base_path + id
@@ -62,6 +62,9 @@ module ActiveFedora
62
62
  refresh
63
63
  load_attached_files
64
64
  self
65
+ rescue Ldp::Gone => err
66
+ logger.error("Tried to reload an object that has been destroyed.\n\t#{err.message}")
67
+ raise ActiveFedora::ObjectNotFoundError
65
68
  end
66
69
 
67
70
  # Initialize an empty model object and set its +resource+
@@ -174,7 +174,7 @@ module ActiveFedora
174
174
 
175
175
  def ldp_headers
176
176
  headers = { 'Content-Type'.freeze => mime_type, 'Content-Length'.freeze => content.size.to_s }
177
- headers['Content-Disposition'.freeze] = "attachment; filename=\"#{URI.encode(@original_name)}\"" if @original_name
177
+ headers['Content-Disposition'.freeze] = "attachment; filename=\"#{URI::DEFAULT_PARSER.escape(@original_name)}\"" if @original_name
178
178
  headers
179
179
  end
180
180
 
@@ -59,8 +59,8 @@ module ActiveFedora
59
59
 
60
60
  add_self_to_partitioned_uris unless @exclude_self
61
61
 
62
- immediate_descendant_uris = rdf_graph.query(predicate: ::RDF::Vocab::LDP.contains).map { |descendant| descendant.object.to_s }
63
- immediate_descendant_uris.each do |descendant_uri|
62
+ rdf_graph.query(predicate: ::RDF::Vocab::LDP.contains).each_object do |uri|
63
+ descendant_uri = uri.to_s
64
64
  self.class.new(
65
65
  descendant_uri,
66
66
  priority_models: priority_models
@@ -88,16 +88,12 @@ module ActiveFedora
88
88
  @partitioned_uris ||= {}
89
89
  end
90
90
 
91
- def rdf_graph_models
92
- rdf_graph.query(predicate: HAS_MODEL_PREDICATE).collect(&:object).collect do |rdf_object|
93
- rdf_object.to_s if rdf_object.literal?
94
- end.compact
95
- end
96
-
97
91
  def add_self_to_partitioned_uris
98
- rdf_graph_models.each do |model|
99
- partitioned_uris[model] ||= []
100
- partitioned_uris[model] << rdf_resource.subject
92
+ rdf_graph.query(predicate: HAS_MODEL_PREDICATE).each_object do |model|
93
+ next unless model.literal?
94
+
95
+ partitioned_uris[model.to_s] ||= []
96
+ partitioned_uris[model.to_s] << rdf_resource.subject
101
97
  end
102
98
  end
103
99
  end
@@ -20,5 +20,11 @@ module ActiveFedora
20
20
  def marshal_load(data)
21
21
  data.each { |name, val| instance_variable_set(name, val) }
22
22
  end
23
+
24
+ private
25
+
26
+ def response_as_graph(resp)
27
+ graph_class.new(subject_uri, data: resp.graph.data)
28
+ end
23
29
  end
24
30
  end
@@ -12,7 +12,7 @@ module ActiveFedora
12
12
  # stored.
13
13
  # @param [::RDF::URI] head_subject URI of head node in list.
14
14
  # @param [::RDF::URI] tail_subject URI of tail node in list.
15
- def initialize(graph, head_subject, tail_subject)
15
+ def initialize(graph, head_subject, tail_subject, node_cache: NodeCache.new)
16
16
  @graph = if graph.respond_to?(:graph)
17
17
  graph.graph.data
18
18
  else
@@ -20,7 +20,7 @@ module ActiveFedora
20
20
  end
21
21
  @head_subject = head_subject
22
22
  @tail_subject = tail_subject
23
- @node_cache ||= NodeCache.new
23
+ @node_cache = node_cache
24
24
  @changed = false
25
25
  tail
26
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveFedora
2
- VERSION = '13.2.0'.freeze
4
+ VERSION = '13.2.5'
3
5
  end
@@ -3,13 +3,24 @@
3
3
  # to add rdf triples to a non-rdf resource and have them persisted.
4
4
  module ActiveFedora::WithMetadata
5
5
  class DefaultSchema < ActiveTriples::Schema
6
+ def self.legacy_ebucore_vocabulary
7
+ @legacy_ebucore_vocabulary ||= Class.new(RDF::StrictVocabulary("http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#")) do
8
+ property :filename,
9
+ comment: %(The name of the file containing the Resource.).freeze,
10
+ domain: "ebucore:Resource".freeze,
11
+ label: "File name".freeze,
12
+ range: "xsd:string".freeze,
13
+ type: "rdf:Property".freeze
14
+ end
15
+ end
16
+
6
17
  property :label, predicate: ::RDF::RDFS.label
7
- property :file_name, predicate: ::RDF::Vocab::EBUCore.filename
18
+ property :file_name, predicate: legacy_ebucore_vocabulary.filename
8
19
  property :file_size, predicate: ::RDF::Vocab::EBUCore.fileSize
9
20
  property :date_created, predicate: ::RDF::Vocab::EBUCore.dateCreated
10
21
  property :date_modified, predicate: ::RDF::Vocab::EBUCore.dateModified
11
22
  property :byte_order, predicate: SweetJPLTerms.byteOrder
12
23
  # This is a server-managed predicate which means Fedora does not let us change it.
13
- property :file_hash, predicate: ::RDF::Vocab::PREMIS.hasMessageDigest
24
+ property :file_hash, predicate: ::RDF::Vocab::PREMIS.hasMessageDigest, server_managed: true
14
25
  end
15
26
  end
@@ -1,6 +1,6 @@
1
1
  module ActiveFedora::WithMetadata
2
2
  class DefaultStrategy < ActiveTriples::ExtensionStrategy
3
- # override apply method to check if property already exists or reciever already has predicate defined.
3
+ # override apply method to check if property already exists or receiver already has predicate defined.
4
4
  # Do not add property if the rdf_resource already responds to the property name
5
5
  # Do not add property if the rdf_resource already has a property with the same predicate.
6
6
  def self.apply(resource, property)
@@ -33,7 +33,7 @@ module ActiveFedora
33
33
 
34
34
  def set_value(*args)
35
35
  super
36
- attribute_will_change! args.first
36
+ attribute_will_change! args.first unless server_managed_properties.include?(args.first)
37
37
  end
38
38
 
39
39
  def ldp_source
@@ -70,6 +70,10 @@ module ActiveFedora
70
70
  ChangeSet.new(self, self, changed_attributes.keys).changes
71
71
  end
72
72
 
73
+ def server_managed_properties
74
+ @server_managed_properties ||= properties.select { |k,v| v[:server_managed] }.keys.map(&:to_sym)
75
+ end
76
+
73
77
  class << self
74
78
  attr_writer :parent_class
75
79
 
@@ -1,15 +1,15 @@
1
1
  development:
2
2
  user: fedoraAdmin
3
3
  password: fedoraAdmin
4
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || ENV['FCREPO_PORT'] || 8984 %>/rest
4
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || ENV['FCREPO_PORT'] || 8984 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
5
5
  base_path: <%= ENV['FCREPO_BASE_PATH'] || '/dev' %>
6
6
  test:
7
7
  user: fedoraAdmin
8
8
  password: fedoraAdmin
9
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_TEST_PORT'] || ENV['FCREPO_PORT'] || 8986 %>/rest
9
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_TEST_PORT'] || ENV['FCREPO_PORT'] || 8986 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
10
10
  base_path: <%= ENV['FCREPO_BASE_PATH'] || '/test' %>
11
11
  production:
12
12
  user: fedoraAdmin
13
13
  password: fedoraAdmin
14
- url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_PORT'] || 8983 %>/rest
14
+ url: http://<%= ENV['FCREPO_HOST'] || 'localhost' %>:<%= ENV['FCREPO_PORT'] || 8983 %>/<%= ENV['FCREPO_REST_PATH'] || 'rest' %>
15
15
  base_path: <%= ENV['FCREPO_BASE_PATH'] || '/prod' %>
@@ -84,7 +84,7 @@
84
84
  <!-- A PointField based date field for faster date range queries and date faceting. -->
85
85
  <fieldType name="tdate" class="solr.DatePointField" docValues="true"/>
86
86
  <!-- A DateRange based date field for truly faster date range queries. -->
87
- <fieldType name="dateRange" class="solr.DateRangeField"/>
87
+ <fieldType name="dateRange" class="solr.DateRangeField" omitNorms="true" omitTermFreqAndPositions="true"/>
88
88
 
89
89
  <!-- This point type indexes the coordinates as separate fields (subFields)
90
90
  If subFieldType is defined, it references a type, and a dynamic field
@@ -261,10 +261,10 @@
261
261
  <!-- date range (_dr...) (for faster AND better range queries) -->
262
262
  <dynamicField name="*_dri" type="dateRange" stored="false" indexed="true" multiValued="false"/>
263
263
  <dynamicField name="*_drim" type="dateRange" stored="false" indexed="true" multiValued="true"/>
264
- <dynamicField name="*_drs" type="dateRange" stored="true" indexed="false" multiValued="false"/>
265
- <dynamicField name="*_drsm" type="dateRange" stored="true" indexed="false" multiValued="true"/>
266
264
  <dynamicField name="*_drsi" type="dateRange" stored="true" indexed="true" multiValued="false"/>
267
265
  <dynamicField name="*_drsim" type="dateRange" stored="true" indexed="true" multiValued="true"/>
266
+ <dynamicField name="*_drs" type="dateRange" stored="true" indexed="true" multiValued="false"/> <!-- indexed anyway because DateRangeField errors otherwise -->
267
+ <dynamicField name="*_drsm" type="dateRange" stored="true" indexed="true" multiValued="true"/> <!-- indexed anyway because DateRangeField errors otherwise -->
268
268
 
269
269
  <!-- long (_l...) -->
270
270
  <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.2.0
4
+ version: 13.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-07-07 00:00:00.000000000 Z
13
+ date: 2022-01-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -122,20 +122,6 @@ dependencies:
122
122
  - - "<"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '2'
125
- - !ruby/object:Gem::Dependency
126
- name: rdf-vocab
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "<"
130
- - !ruby/object:Gem::Version
131
- version: 3.1.5
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "<"
137
- - !ruby/object:Gem::Version
138
- version: 3.1.5
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: rsolr
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -226,6 +212,20 @@ dependencies:
226
212
  - - ">="
227
213
  - !ruby/object:Gem::Version
228
214
  version: '0'
215
+ - !ruby/object:Gem::Dependency
216
+ name: psych
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "<"
220
+ - !ruby/object:Gem::Version
221
+ version: '4'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "<"
227
+ - !ruby/object:Gem::Version
228
+ version: '4'
229
229
  - !ruby/object:Gem::Dependency
230
230
  name: rails
231
231
  requirement: !ruby/object:Gem::Requirement
@@ -618,7 +618,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
618
618
  - !ruby/object:Gem::Version
619
619
  version: '0'
620
620
  requirements: []
621
- rubygems_version: 3.1.4
621
+ rubygems_version: 3.1.6
622
622
  signing_key:
623
623
  specification_version: 4
624
624
  summary: A convenience libary for manipulating documents in the Fedora Repository.